<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>fuse_object_model_3d [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_3dobjectmodel.html">3D Object Model</a> / <a href="toc_3dobjectmodel_transformations.html">变换</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">fuse_object_model_3d</span><span data-if="c" style="display:none;">T_fuse_object_model_3d</span><span data-if="cpp" style="display:none;">FuseObjectModel3d</span><span data-if="dotnet" style="display:none;">FuseObjectModel3d</span><span data-if="python" style="display:none;">fuse_object_model_3d</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">fuse_object_model_3d</span><span data-if="c" style="display:none;">T_fuse_object_model_3d</span><span data-if="cpp" style="display:none;">FuseObjectModel3d</span><span data-if="dotnet" style="display:none;">FuseObjectModel3d</span><span data-if="python" style="display:none;">fuse_object_model_3d</span></code> — Fuse 3D object models into a surface.</p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>fuse_object_model_3d</b>( :  : <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, <a href="#BoundingBox"><i>BoundingBox</i></a>, <a href="#Resolution"><i>Resolution</i></a>, <a href="#SurfaceTolerance"><i>SurfaceTolerance</i></a>, <a href="#MinThickness"><i>MinThickness</i></a>, <a href="#Smoothing"><i>Smoothing</i></a>, <a href="#NormalDirection"><i>NormalDirection</i></a>, <a href="#GenParamName"><i>GenParamName</i></a>, <a href="#GenParamValue"><i>GenParamValue</i></a> : <a href="#ObjectModel3DFusion"><i>ObjectModel3DFusion</i></a>)</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>T_fuse_object_model_3d</b>(const Htuple <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, const Htuple <a href="#BoundingBox"><i>BoundingBox</i></a>, const Htuple <a href="#Resolution"><i>Resolution</i></a>, const Htuple <a href="#SurfaceTolerance"><i>SurfaceTolerance</i></a>, const Htuple <a href="#MinThickness"><i>MinThickness</i></a>, const Htuple <a href="#Smoothing"><i>Smoothing</i></a>, const Htuple <a href="#NormalDirection"><i>NormalDirection</i></a>, const Htuple <a href="#GenParamName"><i>GenParamName</i></a>, const Htuple <a href="#GenParamValue"><i>GenParamValue</i></a>, Htuple* <a href="#ObjectModel3DFusion"><i>ObjectModel3DFusion</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>FuseObjectModel3d</b>(const HTuple&amp; <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, const HTuple&amp; <a href="#BoundingBox"><i>BoundingBox</i></a>, const HTuple&amp; <a href="#Resolution"><i>Resolution</i></a>, const HTuple&amp; <a href="#SurfaceTolerance"><i>SurfaceTolerance</i></a>, const HTuple&amp; <a href="#MinThickness"><i>MinThickness</i></a>, const HTuple&amp; <a href="#Smoothing"><i>Smoothing</i></a>, const HTuple&amp; <a href="#NormalDirection"><i>NormalDirection</i></a>, const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>, HTuple* <a href="#ObjectModel3DFusion"><i>ObjectModel3DFusion</i></a>)</code></p>
<p>
<code>static <a href="HObjectModel3D.html">HObjectModel3D</a> <a href="HObjectModel3D.html">HObjectModel3D</a>::<b>FuseObjectModel3d</b>(const HObjectModel3DArray&amp; <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, const HTuple&amp; <a href="#BoundingBox"><i>BoundingBox</i></a>, const HTuple&amp; <a href="#Resolution"><i>Resolution</i></a>, const HTuple&amp; <a href="#SurfaceTolerance"><i>SurfaceTolerance</i></a>, const HTuple&amp; <a href="#MinThickness"><i>MinThickness</i></a>, const HTuple&amp; <a href="#Smoothing"><i>Smoothing</i></a>, const HTuple&amp; <a href="#NormalDirection"><i>NormalDirection</i></a>, const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>)</code></p>
<p>
<code><a href="HObjectModel3D.html">HObjectModel3D</a> <a href="HObjectModel3D.html">HObjectModel3D</a>::<b>FuseObjectModel3d</b>(const HTuple&amp; <a href="#BoundingBox"><i>BoundingBox</i></a>, double <a href="#Resolution"><i>Resolution</i></a>, double <a href="#SurfaceTolerance"><i>SurfaceTolerance</i></a>, double <a href="#MinThickness"><i>MinThickness</i></a>, double <a href="#Smoothing"><i>Smoothing</i></a>, const HString&amp; <a href="#NormalDirection"><i>NormalDirection</i></a>, const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>) const</code></p>
<p>
<code><a href="HObjectModel3D.html">HObjectModel3D</a> <a href="HObjectModel3D.html">HObjectModel3D</a>::<b>FuseObjectModel3d</b>(const HTuple&amp; <a href="#BoundingBox"><i>BoundingBox</i></a>, double <a href="#Resolution"><i>Resolution</i></a>, double <a href="#SurfaceTolerance"><i>SurfaceTolerance</i></a>, double <a href="#MinThickness"><i>MinThickness</i></a>, double <a href="#Smoothing"><i>Smoothing</i></a>, const char* <a href="#NormalDirection"><i>NormalDirection</i></a>, const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>) const</code></p>
<p>
<code><a href="HObjectModel3D.html">HObjectModel3D</a> <a href="HObjectModel3D.html">HObjectModel3D</a>::<b>FuseObjectModel3d</b>(const HTuple&amp; <a href="#BoundingBox"><i>BoundingBox</i></a>, double <a href="#Resolution"><i>Resolution</i></a>, double <a href="#SurfaceTolerance"><i>SurfaceTolerance</i></a>, double <a href="#MinThickness"><i>MinThickness</i></a>, double <a href="#Smoothing"><i>Smoothing</i></a>, const wchar_t* <a href="#NormalDirection"><i>NormalDirection</i></a>, const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>) const  <span class="signnote">
            (
            Windows only)
          </span></code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>FuseObjectModel3d</b>(<a href="HTuple.html">HTuple</a> <a href="#ObjectModel3D"><i>objectModel3D</i></a>, <a href="HTuple.html">HTuple</a> <a href="#BoundingBox"><i>boundingBox</i></a>, <a href="HTuple.html">HTuple</a> <a href="#Resolution"><i>resolution</i></a>, <a href="HTuple.html">HTuple</a> <a href="#SurfaceTolerance"><i>surfaceTolerance</i></a>, <a href="HTuple.html">HTuple</a> <a href="#MinThickness"><i>minThickness</i></a>, <a href="HTuple.html">HTuple</a> <a href="#Smoothing"><i>smoothing</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NormalDirection"><i>normalDirection</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamName"><i>genParamName</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamValue"><i>genParamValue</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#ObjectModel3DFusion"><i>objectModel3DFusion</i></a>)</code></p>
<p>
<code>static <a href="HObjectModel3D.html">HObjectModel3D</a> <a href="HObjectModel3D.html">HObjectModel3D</a>.<b>FuseObjectModel3d</b>(<a href="HObjectModel3D.html">HObjectModel3D[]</a> <a href="#ObjectModel3D"><i>objectModel3D</i></a>, <a href="HTuple.html">HTuple</a> <a href="#BoundingBox"><i>boundingBox</i></a>, <a href="HTuple.html">HTuple</a> <a href="#Resolution"><i>resolution</i></a>, <a href="HTuple.html">HTuple</a> <a href="#SurfaceTolerance"><i>surfaceTolerance</i></a>, <a href="HTuple.html">HTuple</a> <a href="#MinThickness"><i>minThickness</i></a>, <a href="HTuple.html">HTuple</a> <a href="#Smoothing"><i>smoothing</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NormalDirection"><i>normalDirection</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamName"><i>genParamName</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamValue"><i>genParamValue</i></a>)</code></p>
<p>
<code><a href="HObjectModel3D.html">HObjectModel3D</a> <a href="HObjectModel3D.html">HObjectModel3D</a>.<b>FuseObjectModel3d</b>(<a href="HTuple.html">HTuple</a> <a href="#BoundingBox"><i>boundingBox</i></a>, double <a href="#Resolution"><i>resolution</i></a>, double <a href="#SurfaceTolerance"><i>surfaceTolerance</i></a>, double <a href="#MinThickness"><i>minThickness</i></a>, double <a href="#Smoothing"><i>smoothing</i></a>, string <a href="#NormalDirection"><i>normalDirection</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamName"><i>genParamName</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamValue"><i>genParamValue</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>fuse_object_model_3d</b>(<a href="#ObjectModel3D"><i>object_model_3d</i></a>: MaybeSequence[HHandle], <a href="#BoundingBox"><i>bounding_box</i></a>: Sequence[Union[int, float]], <a href="#Resolution"><i>resolution</i></a>: Union[int, float], <a href="#SurfaceTolerance"><i>surface_tolerance</i></a>: Union[int, float], <a href="#MinThickness"><i>min_thickness</i></a>: Union[int, float], <a href="#Smoothing"><i>smoothing</i></a>: Union[int, float], <a href="#NormalDirection"><i>normal_direction</i></a>: MaybeSequence[str], <a href="#GenParamName"><i>gen_param_name</i></a>: Sequence[str], <a href="#GenParamValue"><i>gen_param_value</i></a>: Sequence[Union[str, float, int]]) -&gt; HHandle</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p><code><span data-if="hdevelop" style="display:inline">fuse_object_model_3d</span><span data-if="c" style="display:none">fuse_object_model_3d</span><span data-if="cpp" style="display:none">FuseObjectModel3d</span><span data-if="com" style="display:none">FuseObjectModel3d</span><span data-if="dotnet" style="display:none">FuseObjectModel3d</span><span data-if="python" style="display:none">fuse_object_model_3d</span></code> fuses multiple point clouds representing an
object surface into a watertight surface <a href="#ObjectModel3DFusion"><i><code><span data-if="hdevelop" style="display:inline">ObjectModel3DFusion</span><span data-if="c" style="display:none">ObjectModel3DFusion</span><span data-if="cpp" style="display:none">ObjectModel3DFusion</span><span data-if="com" style="display:none">ObjectModel3DFusion</span><span data-if="dotnet" style="display:none">objectModel3DFusion</span><span data-if="python" style="display:none">object_model_3dfusion</span></code></i></a>.
该算子 can be used to simplify the postprocessing step of point clouds
that are already registered in the same coordinate system.
In particular, unification, suppression of outliers, trade-off between
smoothing and preservation of edges, equidistant
sub-sampling, hole filling, and meshing of the output surface can often
be handled nicely and in high quality.
On the other hand, these advantages come at the price of a high runtime.
</p>
<p>If you want to fuse 3D point clouds acquired by stereo reconstruction,
you should use <a href="reconstruct_surface_stereo.html"><code><span data-if="hdevelop" style="display:inline">reconstruct_surface_stereo</span><span data-if="c" style="display:none">reconstruct_surface_stereo</span><span data-if="cpp" style="display:none">ReconstructSurfaceStereo</span><span data-if="com" style="display:none">ReconstructSurfaceStereo</span><span data-if="dotnet" style="display:none">ReconstructSurfaceStereo</span><span data-if="python" style="display:none">reconstruct_surface_stereo</span></code></a> instead of
<code><span data-if="hdevelop" style="display:inline">fuse_object_model_3d</span><span data-if="c" style="display:none">fuse_object_model_3d</span><span data-if="cpp" style="display:none">FuseObjectModel3d</span><span data-if="com" style="display:none">FuseObjectModel3d</span><span data-if="dotnet" style="display:none">FuseObjectModel3d</span><span data-if="python" style="display:none">fuse_object_model_3d</span></code>.
</p>
<h3>Workflow</h3>
<ol>
<li>
<p> Acquire point clouds and transform them into a common coordinate
system, for example using <a href="register_object_model_3d_pair.html"><code><span data-if="hdevelop" style="display:inline">register_object_model_3d_pair</span><span data-if="c" style="display:none">register_object_model_3d_pair</span><span data-if="cpp" style="display:none">RegisterObjectModel3dPair</span><span data-if="com" style="display:none">RegisterObjectModel3dPair</span><span data-if="dotnet" style="display:none">RegisterObjectModel3dPair</span><span data-if="python" style="display:none">register_object_model_3d_pair</span></code></a>
and <a href="register_object_model_3d_global.html"><code><span data-if="hdevelop" style="display:inline">register_object_model_3d_global</span><span data-if="c" style="display:none">register_object_model_3d_global</span><span data-if="cpp" style="display:none">RegisterObjectModel3dGlobal</span><span data-if="com" style="display:none">RegisterObjectModel3dGlobal</span><span data-if="dotnet" style="display:none">RegisterObjectModel3dGlobal</span><span data-if="python" style="display:none">register_object_model_3d_global</span></code></a>.
</p>
</li>
<li>
<p> If not already available, compute triangles or point normals for
the point clouds using <a href="triangulate_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">triangulate_object_model_3d</span><span data-if="c" style="display:none">triangulate_object_model_3d</span><span data-if="cpp" style="display:none">TriangulateObjectModel3d</span><span data-if="com" style="display:none">TriangulateObjectModel3d</span><span data-if="dotnet" style="display:none">TriangulateObjectModel3d</span><span data-if="python" style="display:none">triangulate_object_model_3d</span></code></a> or
<a href="surface_normals_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">surface_normals_object_model_3d</span><span data-if="c" style="display:none">surface_normals_object_model_3d</span><span data-if="cpp" style="display:none">SurfaceNormalsObjectModel3d</span><span data-if="com" style="display:none">SurfaceNormalsObjectModel3d</span><span data-if="dotnet" style="display:none">SurfaceNormalsObjectModel3d</span><span data-if="python" style="display:none">surface_normals_object_model_3d</span></code></a>. A triangulation is more
suitable if you have surfaces with many outliers or holes that should
be closed. Otherwise, for clean surfaces, you can work with normals.
</p>
</li>
<li>
<p> Inspect the normals of the input models using
<code>visualize_object_model_3d</code> with <a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a>
<i><span data-if="hdevelop" style="display:inline">'disp_normals'</span><span data-if="c" style="display:none">"disp_normals"</span><span data-if="cpp" style="display:none">"disp_normals"</span><span data-if="com" style="display:none">"disp_normals"</span><span data-if="dotnet" style="display:none">"disp_normals"</span><span data-if="python" style="display:none">"disp_normals"</span></i> or <code>dev_inspect_ctrl</code>.
The point or triangle normals have to be oriented consistently towards
the inside or outside of the object. Set <a href="#NormalDirection"><i><code><span data-if="hdevelop" style="display:inline">NormalDirection</span><span data-if="c" style="display:none">NormalDirection</span><span data-if="cpp" style="display:none">NormalDirection</span><span data-if="com" style="display:none">NormalDirection</span><span data-if="dotnet" style="display:none">normalDirection</span><span data-if="python" style="display:none">normal_direction</span></code></i></a>
accordingly to <i><span data-if="hdevelop" style="display:inline">'inwards'</span><span data-if="c" style="display:none">"inwards"</span><span data-if="cpp" style="display:none">"inwards"</span><span data-if="com" style="display:none">"inwards"</span><span data-if="dotnet" style="display:none">"inwards"</span><span data-if="python" style="display:none">"inwards"</span></i> or <i><span data-if="hdevelop" style="display:inline">'outwards'</span><span data-if="c" style="display:none">"outwards"</span><span data-if="cpp" style="display:none">"outwards"</span><span data-if="com" style="display:none">"outwards"</span><span data-if="dotnet" style="display:none">"outwards"</span><span data-if="python" style="display:none">"outwards"</span></i>.
</p>
</li>
<li>
<p> Specify the volume of interest in <a href="#BoundingBox"><i><code><span data-if="hdevelop" style="display:inline">BoundingBox</span><span data-if="c" style="display:none">BoundingBox</span><span data-if="cpp" style="display:none">BoundingBox</span><span data-if="com" style="display:none">BoundingBox</span><span data-if="dotnet" style="display:none">boundingBox</span><span data-if="python" style="display:none">bounding_box</span></code></i></a>. To obtain
a first guess for <a href="#BoundingBox"><i><code><span data-if="hdevelop" style="display:inline">BoundingBox</span><span data-if="c" style="display:none">BoundingBox</span><span data-if="cpp" style="display:none">BoundingBox</span><span data-if="com" style="display:none">BoundingBox</span><span data-if="dotnet" style="display:none">boundingBox</span><span data-if="python" style="display:none">bounding_box</span></code></i></a>, use
<a href="get_object_model_3d_params.html"><code><span data-if="hdevelop" style="display:inline">get_object_model_3d_params</span><span data-if="c" style="display:none">get_object_model_3d_params</span><span data-if="cpp" style="display:none">GetObjectModel3dParams</span><span data-if="com" style="display:none">GetObjectModel3dParams</span><span data-if="dotnet" style="display:none">GetObjectModel3dParams</span><span data-if="python" style="display:none">get_object_model_3d_params</span></code></a> with <a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a> set to
<i><span data-if="hdevelop" style="display:inline">'bounding_box1'</span><span data-if="c" style="display:none">"bounding_box1"</span><span data-if="cpp" style="display:none">"bounding_box1"</span><span data-if="com" style="display:none">"bounding_box1"</span><span data-if="dotnet" style="display:none">"bounding_box1"</span><span data-if="python" style="display:none">"bounding_box1"</span></i>.
</p>
</li>
<li>
<p> Specify an initial set of parameters: a rough <a href="#Resolution"><i><code><span data-if="hdevelop" style="display:inline">Resolution</span><span data-if="c" style="display:none">Resolution</span><span data-if="cpp" style="display:none">Resolution</span><span data-if="com" style="display:none">Resolution</span><span data-if="dotnet" style="display:none">resolution</span><span data-if="python" style="display:none">resolution</span></code></i></a>
(e.g., 1/100 of the diameter of the <a href="#BoundingBox"><i><code><span data-if="hdevelop" style="display:inline">BoundingBox</span><span data-if="c" style="display:none">BoundingBox</span><span data-if="cpp" style="display:none">BoundingBox</span><span data-if="com" style="display:none">BoundingBox</span><span data-if="dotnet" style="display:none">boundingBox</span><span data-if="python" style="display:none">bounding_box</span></code></i></a>),
<a href="#SurfaceTolerance"><i><code><span data-if="hdevelop" style="display:inline">SurfaceTolerance</span><span data-if="c" style="display:none">SurfaceTolerance</span><span data-if="cpp" style="display:none">SurfaceTolerance</span><span data-if="com" style="display:none">SurfaceTolerance</span><span data-if="dotnet" style="display:none">surfaceTolerance</span><span data-if="python" style="display:none">surface_tolerance</span></code></i></a> at least a bit larger
(e.g., 5*<a href="#Resolution"><i><code><span data-if="hdevelop" style="display:inline">Resolution</span><span data-if="c" style="display:none">Resolution</span><span data-if="cpp" style="display:none">Resolution</span><span data-if="com" style="display:none">Resolution</span><span data-if="dotnet" style="display:none">resolution</span><span data-if="python" style="display:none">resolution</span></code></i></a>),
<a href="#MinThickness"><i><code><span data-if="hdevelop" style="display:inline">MinThickness</span><span data-if="c" style="display:none">MinThickness</span><span data-if="cpp" style="display:none">MinThickness</span><span data-if="com" style="display:none">MinThickness</span><span data-if="dotnet" style="display:none">minThickness</span><span data-if="python" style="display:none">min_thickness</span></code></i></a> as the minimum thickness of the object
(if the input point clouds represent the object only from one side,
set it very high, so that the object is cut off at the
<a href="#BoundingBox"><i><code><span data-if="hdevelop" style="display:inline">BoundingBox</span><span data-if="c" style="display:none">BoundingBox</span><span data-if="cpp" style="display:none">BoundingBox</span><span data-if="com" style="display:none">BoundingBox</span><span data-if="dotnet" style="display:none">boundingBox</span><span data-if="python" style="display:none">bounding_box</span></code></i></a>), <a href="#Smoothing"><i><code><span data-if="hdevelop" style="display:inline">Smoothing</span><span data-if="c" style="display:none">Smoothing</span><span data-if="cpp" style="display:none">Smoothing</span><span data-if="com" style="display:none">Smoothing</span><span data-if="dotnet" style="display:none">smoothing</span><span data-if="python" style="display:none">smoothing</span></code></i></a> set to <i>1.0</i>.
</p>
</li>
<li>
<p> Apply <code><span data-if="hdevelop" style="display:inline">fuse_object_model_3d</span><span data-if="c" style="display:none">fuse_object_model_3d</span><span data-if="cpp" style="display:none">FuseObjectModel3d</span><span data-if="com" style="display:none">FuseObjectModel3d</span><span data-if="dotnet" style="display:none">FuseObjectModel3d</span><span data-if="python" style="display:none">fuse_object_model_3d</span></code> and readjust the parameters to
improve the results with respect to quality and runtime, see below.
Use a <a href="#Resolution"><i><code><span data-if="hdevelop" style="display:inline">Resolution</span><span data-if="c" style="display:none">Resolution</span><span data-if="cpp" style="display:none">Resolution</span><span data-if="com" style="display:none">Resolution</span><span data-if="dotnet" style="display:none">resolution</span><span data-if="python" style="display:none">resolution</span></code></i></a> just fine enough to make out the details of
your object while tuning the other parameters, in order to avoid long
runtimes. Also consider using the additional parameters in
<a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a>.
</p>
</li>
</ol>
<h3>Parameter Description</h3>
<p>See the HDevelop example <code>fuse_object_model_3d_workflow</code> for an
explanation how to fine-tune the parameters for your application.
</p>
<p>The input point clouds <a href="#ObjectModel3D"><i><code><span data-if="hdevelop" style="display:inline">ObjectModel3D</span><span data-if="c" style="display:none">ObjectModel3D</span><span data-if="cpp" style="display:none">ObjectModel3D</span><span data-if="com" style="display:none">ObjectModel3D</span><span data-if="dotnet" style="display:none">objectModel3D</span><span data-if="python" style="display:none">object_model_3d</span></code></i></a> have to lie in a common
coordinate system and add up to the initial surface.
Furthermore, they must contain triangles or point normals.
If both attributes are present, normals are used
as a default due to speed advantages.
If triangles should be used, use <a href="copy_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">copy_object_model_3d</span><span data-if="c" style="display:none">copy_object_model_3d</span><span data-if="cpp" style="display:none">CopyObjectModel3d</span><span data-if="com" style="display:none">CopyObjectModel3d</span><span data-if="dotnet" style="display:none">CopyObjectModel3d</span><span data-if="python" style="display:none">copy_object_model_3d</span></code></a> to obtain only
point and triangle information.
Surfaces with many outliers or holes to be closed should be used with a
triangulation, clean surfaces with normals.
The point or triangle normals have to be oriented consistently towards the
inside or outside of the object.
</p>
<p><a href="#NormalDirection"><i><code><span data-if="hdevelop" style="display:inline">NormalDirection</span><span data-if="c" style="display:none">NormalDirection</span><span data-if="cpp" style="display:none">NormalDirection</span><span data-if="com" style="display:none">NormalDirection</span><span data-if="dotnet" style="display:none">normalDirection</span><span data-if="python" style="display:none">normal_direction</span></code></i></a> is used to specify whether the point or triangle
normals point <i><span data-if="hdevelop" style="display:inline">'inwards'</span><span data-if="c" style="display:none">"inwards"</span><span data-if="cpp" style="display:none">"inwards"</span><span data-if="com" style="display:none">"inwards"</span><span data-if="dotnet" style="display:none">"inwards"</span><span data-if="python" style="display:none">"inwards"</span></i> or <i><span data-if="hdevelop" style="display:inline">'outwards'</span><span data-if="c" style="display:none">"outwards"</span><span data-if="cpp" style="display:none">"outwards"</span><span data-if="com" style="display:none">"outwards"</span><span data-if="dotnet" style="display:none">"outwards"</span><span data-if="python" style="display:none">"outwards"</span></i>. If only one value
is specified, it is applied to all input models. Otherwise, the number of
values has to equal the number of input models.
</p>
<p><a href="#BoundingBox"><i><code><span data-if="hdevelop" style="display:inline">BoundingBox</span><span data-if="c" style="display:none">BoundingBox</span><span data-if="cpp" style="display:none">BoundingBox</span><span data-if="com" style="display:none">BoundingBox</span><span data-if="dotnet" style="display:none">boundingBox</span><span data-if="python" style="display:none">bounding_box</span></code></i></a> specifies the volume of interest to be taken into
account for input and output.
Note that points outside the bounding box are discarded. Triangles of the
input point cloud with a point outside the <a href="#BoundingBox"><i><code><span data-if="hdevelop" style="display:inline">BoundingBox</span><span data-if="c" style="display:none">BoundingBox</span><span data-if="cpp" style="display:none">BoundingBox</span><span data-if="com" style="display:none">BoundingBox</span><span data-if="dotnet" style="display:none">boundingBox</span><span data-if="python" style="display:none">bounding_box</span></code></i></a> are
discarded, not clipped. The <a href="#BoundingBox"><i><code><span data-if="hdevelop" style="display:inline">BoundingBox</span><span data-if="c" style="display:none">BoundingBox</span><span data-if="cpp" style="display:none">BoundingBox</span><span data-if="com" style="display:none">BoundingBox</span><span data-if="dotnet" style="display:none">boundingBox</span><span data-if="python" style="display:none">bounding_box</span></code></i></a> is specified as
a tuple <code>[x1,y1,z1,x2,y2,z2]</code> assigning two opposite corner points
<code>P1=[x1,y1,z1]</code> and <code>P2=[x2,y2,z2]</code> of the rectangular cuboid
(with edges parallel to the coordinate axes).
For a valid bounding box, <code>P1</code> must be the point on the front
lower left corner and <code>P2</code> on the back upper right corner of the
bounding box, i.e., <code>x1&lt;x2</code>, <code>y1&lt;y2</code> and <code>z1&lt;z2</code>.
Note that 该算子 will try to produce a closed surface.
If the input point clouds represent the object from only one point of view,
one wants the bounding box usually to cut off the unknown part,
wherefore <a href="#MinThickness"><i><code><span data-if="hdevelop" style="display:inline">MinThickness</span><span data-if="c" style="display:none">MinThickness</span><span data-if="cpp" style="display:none">MinThickness</span><span data-if="com" style="display:none">MinThickness</span><span data-if="dotnet" style="display:none">minThickness</span><span data-if="python" style="display:none">min_thickness</span></code></i></a> should be set
e.g., to a value larger than or equal to the length of the diagonal of the
bounding box (which can be obtained by using
<a href="get_object_model_3d_params.html"><code><span data-if="hdevelop" style="display:inline">get_object_model_3d_params</span><span data-if="c" style="display:none">get_object_model_3d_params</span><span data-if="cpp" style="display:none">GetObjectModel3dParams</span><span data-if="com" style="display:none">GetObjectModel3dParams</span><span data-if="dotnet" style="display:none">GetObjectModel3dParams</span><span data-if="python" style="display:none">get_object_model_3d_params</span></code></a> with the parameter
<i><span data-if="hdevelop" style="display:inline">'diameter_axis_aligned_bounding_box'</span><span data-if="c" style="display:none">"diameter_axis_aligned_bounding_box"</span><span data-if="cpp" style="display:none">"diameter_axis_aligned_bounding_box"</span><span data-if="com" style="display:none">"diameter_axis_aligned_bounding_box"</span><span data-if="dotnet" style="display:none">"diameter_axis_aligned_bounding_box"</span><span data-if="python" style="display:none">"diameter_axis_aligned_bounding_box"</span></i>). An object cut off
by a surface of the bounding box has no points at this specific surface,
thus has a hole. Note also that you may have to rotate the input point
clouds in order make the bounding box cut off the unknown part in the right
place, since the edges of the bounding box are always parallel to the
coordinate axes. This can be achieved e.g., using
<a href="affine_trans_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">affine_trans_object_model_3d</span><span data-if="c" style="display:none">affine_trans_object_model_3d</span><span data-if="cpp" style="display:none">AffineTransObjectModel3d</span><span data-if="com" style="display:none">AffineTransObjectModel3d</span><span data-if="dotnet" style="display:none">AffineTransObjectModel3d</span><span data-if="python" style="display:none">affine_trans_object_model_3d</span></code></a> or <a href="rigid_trans_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">rigid_trans_object_model_3d</span><span data-if="c" style="display:none">rigid_trans_object_model_3d</span><span data-if="cpp" style="display:none">RigidTransObjectModel3d</span><span data-if="com" style="display:none">RigidTransObjectModel3d</span><span data-if="dotnet" style="display:none">RigidTransObjectModel3d</span><span data-if="python" style="display:none">rigid_trans_object_model_3d</span></code></a>.
</p>
<p><a href="#Resolution"><i><code><span data-if="hdevelop" style="display:inline">Resolution</span><span data-if="c" style="display:none">Resolution</span><span data-if="cpp" style="display:none">Resolution</span><span data-if="com" style="display:none">Resolution</span><span data-if="dotnet" style="display:none">resolution</span><span data-if="python" style="display:none">resolution</span></code></i></a> specifies the
distance of neighboring grid points in each coordinate direction in
the discretization of the <a href="#BoundingBox"><i><code><span data-if="hdevelop" style="display:inline">BoundingBox</span><span data-if="c" style="display:none">BoundingBox</span><span data-if="cpp" style="display:none">BoundingBox</span><span data-if="com" style="display:none">BoundingBox</span><span data-if="dotnet" style="display:none">boundingBox</span><span data-if="python" style="display:none">bounding_box</span></code></i></a>. <a href="#Resolution"><i><code><span data-if="hdevelop" style="display:inline">Resolution</span><span data-if="c" style="display:none">Resolution</span><span data-if="cpp" style="display:none">Resolution</span><span data-if="com" style="display:none">Resolution</span><span data-if="dotnet" style="display:none">resolution</span><span data-if="python" style="display:none">resolution</span></code></i></a> is set
in the same unit as used in <a href="#ObjectModel3D"><i><code><span data-if="hdevelop" style="display:inline">ObjectModel3D</span><span data-if="c" style="display:none">ObjectModel3D</span><span data-if="cpp" style="display:none">ObjectModel3D</span><span data-if="com" style="display:none">ObjectModel3D</span><span data-if="dotnet" style="display:none">objectModel3D</span><span data-if="python" style="display:none">object_model_3d</span></code></i></a>. Too small values will
unnecessarily increase the runtime, so it is recommended to begin with a
coarse resolution.
Too large values will lead to a reconstruction with high loss of details.
<a href="#Smoothing"><i><code><span data-if="hdevelop" style="display:inline">Smoothing</span><span data-if="c" style="display:none">Smoothing</span><span data-if="cpp" style="display:none">Smoothing</span><span data-if="com" style="display:none">Smoothing</span><span data-if="dotnet" style="display:none">smoothing</span><span data-if="python" style="display:none">smoothing</span></code></i></a> may need to be adapted when <a href="#Resolution"><i><code><span data-if="hdevelop" style="display:inline">Resolution</span><span data-if="c" style="display:none">Resolution</span><span data-if="cpp" style="display:none">Resolution</span><span data-if="com" style="display:none">Resolution</span><span data-if="dotnet" style="display:none">resolution</span><span data-if="python" style="display:none">resolution</span></code></i></a>
is changed.
<a href="#Resolution"><i><code><span data-if="hdevelop" style="display:inline">Resolution</span><span data-if="c" style="display:none">Resolution</span><span data-if="cpp" style="display:none">Resolution</span><span data-if="com" style="display:none">Resolution</span><span data-if="dotnet" style="display:none">resolution</span><span data-if="python" style="display:none">resolution</span></code></i></a> should always be a bit smaller than
<a href="#SurfaceTolerance"><i><code><span data-if="hdevelop" style="display:inline">SurfaceTolerance</span><span data-if="c" style="display:none">SurfaceTolerance</span><span data-if="cpp" style="display:none">SurfaceTolerance</span><span data-if="com" style="display:none">SurfaceTolerance</span><span data-if="dotnet" style="display:none">surfaceTolerance</span><span data-if="python" style="display:none">surface_tolerance</span></code></i></a> in order to avoid discretization artifacts.
</p>
<p><a href="#SurfaceTolerance"><i><code><span data-if="hdevelop" style="display:inline">SurfaceTolerance</span><span data-if="c" style="display:none">SurfaceTolerance</span><span data-if="cpp" style="display:none">SurfaceTolerance</span><span data-if="com" style="display:none">SurfaceTolerance</span><span data-if="dotnet" style="display:none">surfaceTolerance</span><span data-if="python" style="display:none">surface_tolerance</span></code></i></a>
specifies how much noise in the input point cloud should be combined
to the surface from its inside and outside.
Sole exemption when <a href="#SurfaceTolerance"><i><code><span data-if="hdevelop" style="display:inline">SurfaceTolerance</span><span data-if="c" style="display:none">SurfaceTolerance</span><span data-if="cpp" style="display:none">SurfaceTolerance</span><span data-if="com" style="display:none">SurfaceTolerance</span><span data-if="dotnet" style="display:none">surfaceTolerance</span><span data-if="python" style="display:none">surface_tolerance</span></code></i></a> is larger than
<i><span data-if="hdevelop" style="display:inline">'distance_in_front'</span><span data-if="c" style="display:none">"distance_in_front"</span><span data-if="cpp" style="display:none">"distance_in_front"</span><span data-if="com" style="display:none">"distance_in_front"</span><span data-if="dotnet" style="display:none">"distance_in_front"</span><span data-if="python" style="display:none">"distance_in_front"</span></i>, in that case <i><span data-if="hdevelop" style="display:inline">'distance_in_front'</span><span data-if="c" style="display:none">"distance_in_front"</span><span data-if="cpp" style="display:none">"distance_in_front"</span><span data-if="com" style="display:none">"distance_in_front"</span><span data-if="dotnet" style="display:none">"distance_in_front"</span><span data-if="python" style="display:none">"distance_in_front"</span></i>
determines the surface thickness to the front of the object.
<a href="#SurfaceTolerance"><i><code><span data-if="hdevelop" style="display:inline">SurfaceTolerance</span><span data-if="c" style="display:none">SurfaceTolerance</span><span data-if="cpp" style="display:none">SurfaceTolerance</span><span data-if="com" style="display:none">SurfaceTolerance</span><span data-if="dotnet" style="display:none">surfaceTolerance</span><span data-if="python" style="display:none">surface_tolerance</span></code></i></a> is set in the same unit as used in
<a href="#ObjectModel3D"><i><code><span data-if="hdevelop" style="display:inline">ObjectModel3D</span><span data-if="c" style="display:none">ObjectModel3D</span><span data-if="cpp" style="display:none">ObjectModel3D</span><span data-if="com" style="display:none">ObjectModel3D</span><span data-if="dotnet" style="display:none">objectModel3D</span><span data-if="python" style="display:none">object_model_3d</span></code></i></a>.
Points in the interior of the object as specified by
<a href="#NormalDirection"><i><code><span data-if="hdevelop" style="display:inline">NormalDirection</span><span data-if="c" style="display:none">NormalDirection</span><span data-if="cpp" style="display:none">NormalDirection</span><span data-if="com" style="display:none">NormalDirection</span><span data-if="dotnet" style="display:none">normalDirection</span><span data-if="python" style="display:none">normal_direction</span></code></i></a> (and also
<a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a>=<i><span data-if="hdevelop" style="display:inline">'angle_threshold'</span><span data-if="c" style="display:none">"angle_threshold"</span><span data-if="cpp" style="display:none">"angle_threshold"</span><span data-if="com" style="display:none">"angle_threshold"</span><span data-if="dotnet" style="display:none">"angle_threshold"</span><span data-if="python" style="display:none">"angle_threshold"</span></i>) are considered surely
inside the object if their distance to the initial surface exceeds
<a href="#SurfaceTolerance"><i><code><span data-if="hdevelop" style="display:inline">SurfaceTolerance</span><span data-if="c" style="display:none">SurfaceTolerance</span><span data-if="cpp" style="display:none">SurfaceTolerance</span><span data-if="com" style="display:none">SurfaceTolerance</span><span data-if="dotnet" style="display:none">surfaceTolerance</span><span data-if="python" style="display:none">surface_tolerance</span></code></i></a> but is smaller than <a href="#MinThickness"><i><code><span data-if="hdevelop" style="display:inline">MinThickness</span><span data-if="c" style="display:none">MinThickness</span><span data-if="cpp" style="display:none">MinThickness</span><span data-if="com" style="display:none">MinThickness</span><span data-if="dotnet" style="display:none">minThickness</span><span data-if="python" style="display:none">min_thickness</span></code></i></a>.
<a href="#SurfaceTolerance"><i><code><span data-if="hdevelop" style="display:inline">SurfaceTolerance</span><span data-if="c" style="display:none">SurfaceTolerance</span><span data-if="cpp" style="display:none">SurfaceTolerance</span><span data-if="com" style="display:none">SurfaceTolerance</span><span data-if="dotnet" style="display:none">surfaceTolerance</span><span data-if="python" style="display:none">surface_tolerance</span></code></i></a> always has to be smaller
than <a href="#MinThickness"><i><code><span data-if="hdevelop" style="display:inline">MinThickness</span><span data-if="c" style="display:none">MinThickness</span><span data-if="cpp" style="display:none">MinThickness</span><span data-if="com" style="display:none">MinThickness</span><span data-if="dotnet" style="display:none">minThickness</span><span data-if="python" style="display:none">min_thickness</span></code></i></a>.
<a href="#SurfaceTolerance"><i><code><span data-if="hdevelop" style="display:inline">SurfaceTolerance</span><span data-if="c" style="display:none">SurfaceTolerance</span><span data-if="cpp" style="display:none">SurfaceTolerance</span><span data-if="com" style="display:none">SurfaceTolerance</span><span data-if="dotnet" style="display:none">surfaceTolerance</span><span data-if="python" style="display:none">surface_tolerance</span></code></i></a> should always be a bit larger than
<a href="#Resolution"><i><code><span data-if="hdevelop" style="display:inline">Resolution</span><span data-if="c" style="display:none">Resolution</span><span data-if="cpp" style="display:none">Resolution</span><span data-if="com" style="display:none">Resolution</span><span data-if="dotnet" style="display:none">resolution</span><span data-if="python" style="display:none">resolution</span></code></i></a> in order to avoid discretization artifacts.
</p>
<p><a href="#MinThickness"><i><code><span data-if="hdevelop" style="display:inline">MinThickness</span><span data-if="c" style="display:none">MinThickness</span><span data-if="cpp" style="display:none">MinThickness</span><span data-if="com" style="display:none">MinThickness</span><span data-if="dotnet" style="display:none">minThickness</span><span data-if="python" style="display:none">min_thickness</span></code></i></a> specifies the thickness of the object in normal
direction of the initial surfaces. <a href="#MinThickness"><i><code><span data-if="hdevelop" style="display:inline">MinThickness</span><span data-if="c" style="display:none">MinThickness</span><span data-if="cpp" style="display:none">MinThickness</span><span data-if="com" style="display:none">MinThickness</span><span data-if="dotnet" style="display:none">minThickness</span><span data-if="python" style="display:none">min_thickness</span></code></i></a> is set
in the same unit as used in <a href="#ObjectModel3D"><i><code><span data-if="hdevelop" style="display:inline">ObjectModel3D</span><span data-if="c" style="display:none">ObjectModel3D</span><span data-if="cpp" style="display:none">ObjectModel3D</span><span data-if="com" style="display:none">ObjectModel3D</span><span data-if="dotnet" style="display:none">objectModel3D</span><span data-if="python" style="display:none">object_model_3d</span></code></i></a>.
Points which are specified by <a href="#NormalDirection"><i><code><span data-if="hdevelop" style="display:inline">NormalDirection</span><span data-if="c" style="display:none">NormalDirection</span><span data-if="cpp" style="display:none">NormalDirection</span><span data-if="com" style="display:none">NormalDirection</span><span data-if="dotnet" style="display:none">normalDirection</span><span data-if="python" style="display:none">normal_direction</span></code></i></a> (and also
<a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a>=<i><span data-if="hdevelop" style="display:inline">'angle_threshold'</span><span data-if="c" style="display:none">"angle_threshold"</span><span data-if="cpp" style="display:none">"angle_threshold"</span><span data-if="com" style="display:none">"angle_threshold"</span><span data-if="dotnet" style="display:none">"angle_threshold"</span><span data-if="python" style="display:none">"angle_threshold"</span></i>) to be in the interior of
the object are only considered as being inside if their distance to the
initial surface does not exceed <a href="#MinThickness"><i><code><span data-if="hdevelop" style="display:inline">MinThickness</span><span data-if="c" style="display:none">MinThickness</span><span data-if="cpp" style="display:none">MinThickness</span><span data-if="com" style="display:none">MinThickness</span><span data-if="dotnet" style="display:none">minThickness</span><span data-if="python" style="display:none">min_thickness</span></code></i></a>. Note that this can
lead to a hollow part of the object.
<a href="#MinThickness"><i><code><span data-if="hdevelop" style="display:inline">MinThickness</span><span data-if="c" style="display:none">MinThickness</span><span data-if="cpp" style="display:none">MinThickness</span><span data-if="com" style="display:none">MinThickness</span><span data-if="dotnet" style="display:none">minThickness</span><span data-if="python" style="display:none">min_thickness</span></code></i></a> always has to be larger than
<a href="#SurfaceTolerance"><i><code><span data-if="hdevelop" style="display:inline">SurfaceTolerance</span><span data-if="c" style="display:none">SurfaceTolerance</span><span data-if="cpp" style="display:none">SurfaceTolerance</span><span data-if="com" style="display:none">SurfaceTolerance</span><span data-if="dotnet" style="display:none">surfaceTolerance</span><span data-if="python" style="display:none">surface_tolerance</span></code></i></a>.
For point clouds representing the object from different sides,
<a href="#MinThickness"><i><code><span data-if="hdevelop" style="display:inline">MinThickness</span><span data-if="c" style="display:none">MinThickness</span><span data-if="cpp" style="display:none">MinThickness</span><span data-if="com" style="display:none">MinThickness</span><span data-if="dotnet" style="display:none">minThickness</span><span data-if="python" style="display:none">min_thickness</span></code></i></a> is best set as the thickness
of the objects narrowest part.
Note that 该算子 will try to produce a closed surface.
If the input point clouds represent the object only from one side, this
parameter should be set very large, so that the object is cut off at the
bounding box.
The backside of the objects is not observed and thus its
reconstruction will probably be incorrect.
If you observe several distinct objects from only one side, you may want
to reduce the parameter <a href="#MinThickness"><i><code><span data-if="hdevelop" style="display:inline">MinThickness</span><span data-if="c" style="display:none">MinThickness</span><span data-if="cpp" style="display:none">MinThickness</span><span data-if="com" style="display:none">MinThickness</span><span data-if="dotnet" style="display:none">minThickness</span><span data-if="python" style="display:none">min_thickness</span></code></i></a> to restrict the
depth of reconstructed objects and thus keep them from being smudged into
one surface.
Too small values can result in holes or double walls in the fused point
cloud. Too large values can result in a distorted point cloud or
blow up the surface towards the outside of the object (if the surface is
blown up beyond the bounding box, no points will be returned).
</p>
<p><a href="#Smoothing"><i><code><span data-if="hdevelop" style="display:inline">Smoothing</span><span data-if="c" style="display:none">Smoothing</span><span data-if="cpp" style="display:none">Smoothing</span><span data-if="com" style="display:none">Smoothing</span><span data-if="dotnet" style="display:none">smoothing</span><span data-if="python" style="display:none">smoothing</span></code></i></a>
determines how important a small total
variation of the distance function is compared to data fidelity. Thus,
<a href="#Smoothing"><i><code><span data-if="hdevelop" style="display:inline">Smoothing</span><span data-if="c" style="display:none">Smoothing</span><span data-if="cpp" style="display:none">Smoothing</span><span data-if="com" style="display:none">Smoothing</span><span data-if="dotnet" style="display:none">smoothing</span><span data-if="python" style="display:none">smoothing</span></code></i></a> regulates the 'jumpiness' of the resulting surface.
Note that the actual value of <a href="#Smoothing"><i><code><span data-if="hdevelop" style="display:inline">Smoothing</span><span data-if="c" style="display:none">Smoothing</span><span data-if="cpp" style="display:none">Smoothing</span><span data-if="com" style="display:none">Smoothing</span><span data-if="dotnet" style="display:none">smoothing</span><span data-if="python" style="display:none">smoothing</span></code></i></a> for a given data to
result in an appropriate and visually pleasing surface has to be found by
trial and error.
Too small values lead to integrating many outliers into the surface even
if the surface then exhibits many jumps. Too large values lead to lost
fidelity towards the input point clouds (how the
algorithm views distances to the input point clouds depends heavily on
<a href="#SurfaceTolerance"><i><code><span data-if="hdevelop" style="display:inline">SurfaceTolerance</span><span data-if="c" style="display:none">SurfaceTolerance</span><span data-if="cpp" style="display:none">SurfaceTolerance</span><span data-if="com" style="display:none">SurfaceTolerance</span><span data-if="dotnet" style="display:none">surfaceTolerance</span><span data-if="python" style="display:none">surface_tolerance</span></code></i></a> and <a href="#MinThickness"><i><code><span data-if="hdevelop" style="display:inline">MinThickness</span><span data-if="c" style="display:none">MinThickness</span><span data-if="cpp" style="display:none">MinThickness</span><span data-if="com" style="display:none">MinThickness</span><span data-if="dotnet" style="display:none">minThickness</span><span data-if="python" style="display:none">min_thickness</span></code></i></a>).
<a href="#Smoothing"><i><code><span data-if="hdevelop" style="display:inline">Smoothing</span><span data-if="c" style="display:none">Smoothing</span><span data-if="cpp" style="display:none">Smoothing</span><span data-if="com" style="display:none">Smoothing</span><span data-if="dotnet" style="display:none">smoothing</span><span data-if="python" style="display:none">smoothing</span></code></i></a> may need to be adapted when <a href="#Resolution"><i><code><span data-if="hdevelop" style="display:inline">Resolution</span><span data-if="c" style="display:none">Resolution</span><span data-if="cpp" style="display:none">Resolution</span><span data-if="com" style="display:none">Resolution</span><span data-if="dotnet" style="display:none">resolution</span><span data-if="python" style="display:none">resolution</span></code></i></a>
is changed.
</p>
<div style="text-align:center;" class="figure">
<table style="margin-left:auto;margin-right:auto">
<tr>
<td><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" id="svg8" version="1.1" viewBox="0 0 134.67326 98.067261" height="98.067261mm" width="134.67326mm">
  <defs id="defs2">
    <marker style="overflow:visible" id="Arrow2Lend" refX="0" refY="0" orient="auto">
      <path transform="matrix(-1.1,0,0,-1.1,-1.1,0)" d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" id="path4550"></path>
    </marker>
    <marker style="overflow:visible" id="Arrow2Lstart" refX="0" refY="0" orient="auto">
      <path transform="matrix(1.1,0,0,1.1,1.1,0)" d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" id="path4547"></path>
    </marker>
    <marker style="overflow:visible" id="Arrow2Lstart-3" refX="0" refY="0" orient="auto">
      <path transform="matrix(1.1,0,0,1.1,1.1,0)" d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" id="path4547-7"></path>
    </marker>
    <marker style="overflow:visible" id="Arrow2Lend-8" refX="0" refY="0" orient="auto">
      <path transform="matrix(-1.1,0,0,-1.1,-1.1,0)" d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" id="path4550-7"></path>
    </marker>
    <marker style="overflow:visible" id="Arrow2Lend-8-8" refX="0" refY="0" orient="auto">
      <path transform="matrix(-1.1,0,0,-1.1,-1.1,0)" d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" id="path4550-7-5"></path>
    </marker>
    <marker style="overflow:visible" id="Arrow2Lend-8-8-5" refX="0" refY="0" orient="auto">
      <path transform="matrix(-1.1,0,0,-1.1,-1.1,0)" d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" id="path4550-7-5-9"></path>
    </marker>
    <marker style="overflow:visible" id="Arrow2Lstart-2" refX="0" refY="0" orient="auto">
      <path transform="matrix(1.1,0,0,1.1,1.1,0)" d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" id="path4547-4"></path>
    </marker>
    <marker style="overflow:visible" id="Arrow2Lend-83" refX="0" refY="0" orient="auto">
      <path transform="matrix(-1.1,0,0,-1.1,-1.1,0)" d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" id="path4550-6"></path>
    </marker>
  </defs>
  <metadata id="metadata5">
    <rdf:RDF>
      <cc:Work rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"></dc:type>
        <dc:title></dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <g transform="translate(-23.630421,-42.29992)" style="display:inline" id="layer1">
    <path id="path4485" d="M 38.630421,77.037191 H 142.8312" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.48367471;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.93469881, 0.96734941, 0.48367471, 0.96734941;stroke-dashoffset:0;stroke-opacity:1"></path>
    <path id="path4485-7" d="M 39.197384,58.862851 H 143.20919" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.22665046;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.81320371, 0.90660186;stroke-dashoffset:0;stroke-opacity:1"></path>
    <path id="path4485-7-8" d="M 38.913902,95.211506 H 142.83121" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.22654748;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.81237991, 0.90618995;stroke-dashoffset:0;stroke-opacity:1"></path>
    <path id="path4527" d="M 51.941461,59.451424 V 76.699472" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.18629697px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow2Lstart)"></path>
    <text id="text4489-6" y="84.543755" x="54.540958" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:4.23333311px;stroke-width:0.26458332px" y="84.543755" x="54.540958" id="tspan4487-4">SurfaceTolerance</tspan></text>
    <path id="path4485-7-8-9" d="M 39.10289,124.87842 H 143.30368" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.22685628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"></path>
    <path id="path4527-4" d="M 121.60522,77.855508 V 123.337" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend-8)"></path>
    <text id="text4489-6-5" y="116.6234" x="91.466324" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:4.23333311px;stroke-width:0.26458332px" y="116.6234" x="91.466324" id="tspan4487-4-4">MinThickness</tspan></text>
    <text id="text5797" y="92.405167" x="102.49786" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px" y="92.405167" x="102.49786" id="tspan5795">s</tspan></text>
    <text id="text5797-9-99" y="140.31378" x="100.03944" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px" y="140.31378" x="100.03944" id="tspan5795-3-91">o</tspan></text>
    <text id="text5797-9-5" y="137.0658" x="38.88623" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px" y="137.0658" x="38.88623" id="tspan5795-3-0">o</tspan></text>
    <text id="text5797-9-99-9" y="131.05222" x="118.39892" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px" y="131.05222" x="118.39892" id="tspan5795-3-91-3">o</tspan></text>
    <text id="text5797-9-99-48" y="138.13025" x="134.59003" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px" y="138.13025" x="134.59003" id="tspan5795-3-91-6">o</tspan></text>
    <text id="text5797-9-99-0" y="130.01462" x="60.178978" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px" y="130.01462" x="60.178978" id="tspan5795-3-91-9">o</tspan></text>
    <text id="text5797-9-99-78" y="46.320591" x="45.834564" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px" y="46.320591" x="45.834564" id="tspan5795-3-91-0">o</tspan></text>
    <text id="text5797-9-99-704" y="51.396408" x="68.059578" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#2528b9;fill-opacity:1;stroke-width:0.26458332px" y="51.396408" x="68.059578" id="tspan5795-3-91-88">c</tspan></text>
    <text id="text5797-9-8-2" y="110.41074" x="106.58495" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#18b2ef;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#18b2ef;fill-opacity:1;stroke-width:0.26458332px" y="110.41074" x="106.58495" id="tspan5795-3-2-4">i</tspan></text>
    <text id="text5797-9-8-74" y="101.98158" x="46.689037" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#18b2ef;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#18b2ef;fill-opacity:1;stroke-width:0.26458332px" y="101.98158" x="46.689037" id="tspan5795-3-2-7">i</tspan></text>
    <text id="text5797-9-8-3" y="116.23464" x="138.21771" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#18b2ef;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#18b2ef;fill-opacity:1;stroke-width:0.26458332px" y="116.23464" x="138.21771" id="tspan5795-3-2-5">i</tspan></text>
    <text id="text5797-9-8-1" y="103.05066" x="96.534805" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#18b2ef;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#18b2ef;fill-opacity:1;stroke-width:0.26458332px" y="103.05066" x="96.534805" id="tspan5795-3-2-75">i</tspan></text>
    <text id="text5797-9-8-21" y="113.16335" x="75.54071" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#18b2ef;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#18b2ef;fill-opacity:1;stroke-width:0.26458332px" y="113.16335" x="75.54071" id="tspan5795-3-2-945">i</tspan></text>
    <text id="text5797-4" y="69.179329" x="140.31058" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px" y="69.179329" x="140.31058" id="tspan5795-0">s</tspan></text>
    <text id="text5797-5" y="71.451118" x="126.41256" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px" y="71.451118" x="126.41256" id="tspan5795-2">s</tspan></text>
    <text id="text5797-2" y="90.828156" x="117.59267" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px" y="90.828156" x="117.59267" id="tspan5795-03">s</tspan></text>
    <text id="text5797-8" y="82.810074" x="107.30279" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px" y="82.810074" x="107.30279" id="tspan5795-7">s</tspan></text>
    <text id="text5797-90" y="69.438248" x="112.67647" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px" y="69.438248" x="112.67647" id="tspan5795-08">s</tspan></text>
    <text id="text5797-3" y="74.250732" x="135.87547" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px" y="74.250732" x="135.87547" id="tspan5795-4">s</tspan></text>
    <text id="text5797-1" y="74.396645" x="59.359856" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px" y="74.396645" x="59.359856" id="tspan5795-5">s</tspan></text>
    <text id="text5797-80" y="73.455643" x="41.688118" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px" y="73.455643" x="41.688118" id="tspan5795-28">s</tspan></text>
    <text id="text5797-6" y="86.952751" x="48.77076" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px" y="86.952751" x="48.77076" id="tspan5795-23">s</tspan></text>
    <text id="text5797-99" y="82.858238" x="40.915478" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px" y="82.858238" x="40.915478" id="tspan5795-9">s</tspan></text>
    <text id="text5797-86" y="69.399109" x="80.598007" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px" y="69.399109" x="80.598007" id="tspan5795-91">s</tspan></text>
    <text id="text5797-26" y="87.353653" x="138.84059" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px" y="87.353653" x="138.84059" id="tspan5795-92">s</tspan></text>
    <text id="text5797-18" y="69.045692" x="102.49194" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px" y="69.045692" x="102.49194" id="tspan5795-6">s</tspan></text>
    <text id="text5797-18-7" y="77.999222" x="89.796631" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px" y="77.999222" x="89.796631" id="tspan5795-6-4">s</tspan></text>
    <text id="text5797-18-4" y="77.197411" x="117.99357" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px" y="77.197411" x="117.99357" id="tspan5795-6-0">s</tspan></text>
    <text id="text5797-18-8" y="77.865585" x="130.4216" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px" y="77.865585" x="130.4216" id="tspan5795-6-41">s</tspan></text>
    <text id="text5797-18-6" y="77.731949" x="45.42989" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px" y="77.731949" x="45.42989" id="tspan5795-6-5">s</tspan></text>
    <text id="text5797-18-9" y="78.338058" x="71.062057" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px" y="78.338058" x="71.062057" id="tspan5795-6-02">s</tspan></text>
    <text id="text5797-18-75" y="78.266495" x="101.82376" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px" y="78.266495" x="101.82376" id="tspan5795-6-9">s</tspan></text>
    <text id="text5797-9-99-5-5" y="51.93766" x="95.736359" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#2528b9;fill-opacity:1;stroke-width:0.26458332px" y="51.93766" x="95.736359" id="tspan5795-3-91-53-6">c</tspan></text>
    <text id="text5797-9-99-5-9" y="44.277405" x="131.59633" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px" y="44.277405" x="131.59633" id="tspan5795-3-91-53-4">o</tspan></text>
    <text id="text5797-9-99-5-5-5" y="57.891846" x="138.68336" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#2528b9;fill-opacity:1;stroke-width:0.26458332px" y="57.891846" x="138.68336" id="tspan5795-3-91-53-6-4">c</tspan></text>
    <text id="text5797-9-99-5-5-9" y="54.868034" x="47.024139" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#2528b9;fill-opacity:1;stroke-width:0.26458332px" y="54.868034" x="47.024139" id="tspan5795-3-91-53-6-8">c</tspan></text>
    <text id="text5797-9-99-78-1" y="44.850803" x="87.452705" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px" y="44.850803" x="87.452705" id="tspan5795-3-91-0-5">o</tspan></text>
    <text id="text5797-9-8-21-8" y="113.12103" x="54.304859" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#18b2ef;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#18b2ef;fill-opacity:1;stroke-width:0.26458332px" y="113.12103" x="54.304859" id="tspan5795-3-2-945-1">i</tspan></text>
    <text id="text5797-9-8-21-4" y="103.76612" x="67.345039" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#18b2ef;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#18b2ef;fill-opacity:1;stroke-width:0.26458332px" y="103.76612" x="67.345039" id="tspan5795-3-2-945-12">i</tspan></text>
    <text id="text5797-9-8-21-2" y="123.89336" x="66.116608" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#18b2ef;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#18b2ef;fill-opacity:1;stroke-width:0.26458332px" y="123.89336" x="66.116608" id="tspan5795-3-2-945-5">i</tspan></text>
    <text id="text5797-9-8-21-22" y="123.42088" x="100.22897" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#18b2ef;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#18b2ef;fill-opacity:1;stroke-width:0.26458332px" y="123.42088" x="100.22897" id="tspan5795-3-2-945-7">i</tspan></text>
    <text id="text5797-9-8-21-7" y="123.42088" x="45.800396" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#18b2ef;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#18b2ef;fill-opacity:1;stroke-width:0.26458332px" y="123.42088" x="45.800396" id="tspan5795-3-2-945-6">i</tspan></text>
    <text id="text5797-9-8-21-45" y="104.80555" x="132.26245" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#18b2ef;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#18b2ef;fill-opacity:1;stroke-width:0.26458332px" y="104.80555" x="132.26245" id="tspan5795-3-2-945-74">i</tspan></text>
    <text id="text5797-9-8-21-0" y="98.474449" x="83.503517" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#18b2ef;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#18b2ef;fill-opacity:1;stroke-width:0.26458332px" y="98.474449" x="83.503517" id="tspan5795-3-2-945-57">i</tspan></text>
    <text id="text5797-9-99-5-5-5-4" y="49.103897" x="120.25703" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#2528b9;fill-opacity:1;stroke-width:0.26458332px" y="49.103897" x="120.25703" id="tspan5795-3-91-53-6-4-7">c</tspan></text>
    <text id="text5797-18-75-5" y="63.277142" x="73.313301" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px" y="63.277142" x="73.313301" id="tspan5795-6-9-3">s</tspan></text>
    <text id="text5797-9-99-48-0" y="127.4386" x="82.925186" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px" y="127.4386" x="82.925186" id="tspan5795-3-91-6-6">o</tspan></text>
    <text id="text5797-9-99-48-1" y="137.45497" x="70.640953" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px" y="137.45497" x="70.640953" id="tspan5795-3-91-6-4">o</tspan></text>
    <text transform="scale(2.5409268,-0.39355718)" id="text5797-9-99-5-9-9" y="-111.27747" x="61.394363" style="font-style:normal;font-weight:normal;font-size:4.16514683px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.10412867px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:1.3883822px;fill:#ffffff;fill-opacity:0;stroke-width:0.10412867px" y="-111.27747" x="61.394363" id="tspan5795-3-91-53-4-0">.</tspan></text>
    <text id="text5797-9-99-5-9-9-3" y="139.38419" x="24.614069" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#ffffff;fill-opacity:0;stroke-width:0.26458332px" y="139.38419" x="24.614069" id="tspan5795-3-91-53-4-0-7">.</tspan></text>
    <path id="path4527-3" d="M 93.178039,77.132198 V 94.734604" style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.18849733;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Lend-83)"></path>
    <text id="text4489-6-52" y="72.595016" x="54.492474" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:4.23333311px;stroke-width:0.26458332px" y="72.595016" x="54.492474" id="tspan4487-4-5">SurfaceTolerance</tspan></text>
  </g>
  <g transform="translate(-23.630421,-42.29992)" style="display:inline" id="layer2">
    <path id="path4485-7-8-9-0-6" d="M 39.291879,46.040849 H 142.92571" style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.22623827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"></path>
    <text id="text4489-6-9-8" y="56.669453" x="93.854164" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:4.23333311px;stroke-width:0.26458332px" y="56.669453" x="93.854164" id="tspan4487-4-1-9">'distance_in_front'</tspan></text>
    <path id="path4527-4-1-7" d="M 134.60211,76.347107 V 46.854615" style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend-8-8-5)"></path>
  </g>
  <g transform="translate(-23.630421,-42.29992)" style="display:inline" id="layer3">
    <text id="text5797-9-99-5" y="64.368477" x="121.07161" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px" y="64.368477" x="121.07161" id="tspan5795-3-91-53">s</tspan></text>
    <text id="text5797-9-99-00" y="62.459602" x="137.03412" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px" y="62.459602" x="137.03412" id="tspan5795-3-91-2">s</tspan></text>
  </g>
</svg></td>
<td><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" width="134.67326mm" height="98.067261mm" viewBox="0 0 134.67326 98.067261" version="1.1" id="svg8">
  <defs id="defs2">
    <marker orient="auto" refY="0" refX="0" id="Arrow2Lend" style="overflow:visible">
      <path id="path4550" style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" transform="matrix(-1.1,0,0,-1.1,-1.1,0)"></path>
    </marker>
    <marker orient="auto" refY="0" refX="0" id="Arrow2Lstart" style="overflow:visible">
      <path id="path4547" style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" transform="matrix(1.1,0,0,1.1,1.1,0)"></path>
    </marker>
    <marker orient="auto" refY="0" refX="0" id="Arrow2Lstart-3" style="overflow:visible">
      <path id="path4547-7" style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" transform="matrix(1.1,0,0,1.1,1.1,0)"></path>
    </marker>
    <marker orient="auto" refY="0" refX="0" id="Arrow2Lend-8" style="overflow:visible">
      <path id="path4550-7" style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" transform="matrix(-1.1,0,0,-1.1,-1.1,0)"></path>
    </marker>
    <marker orient="auto" refY="0" refX="0" id="Arrow2Lend-8-8" style="overflow:visible">
      <path id="path4550-7-5" style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" transform="matrix(-1.1,0,0,-1.1,-1.1,0)"></path>
    </marker>
    <marker orient="auto" refY="0" refX="0" id="Arrow2Lend-8-8-5" style="overflow:visible">
      <path id="path4550-7-5-9" style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" transform="matrix(-1.1,0,0,-1.1,-1.1,0)"></path>
    </marker>
    <marker orient="auto" refY="0" refX="0" id="Arrow2Lstart-2" style="overflow:visible">
      <path id="path4547-4" style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" transform="matrix(1.1,0,0,1.1,1.1,0)"></path>
    </marker>
    <marker orient="auto" refY="0" refX="0" id="Arrow2Lend-83" style="overflow:visible">
      <path id="path4550-6" style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" transform="matrix(-1.1,0,0,-1.1,-1.1,0)"></path>
    </marker>
    <marker orient="auto" refY="0" refX="0" id="Arrow2Lend-8-8-5-8" style="overflow:visible">
      <path id="path4550-7-5-9-6" style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" transform="matrix(-1.1,0,0,-1.1,-1.1,0)"></path>
    </marker>
  </defs>
  <metadata id="metadata5">
    <rdf:RDF>
      <cc:Work rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"></dc:type>
        <dc:title></dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <g id="layer1" style="display:inline" transform="translate(-23.630421,-42.29992)">
    <path style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.48367471;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.93469881, 0.96734941, 0.48367471, 0.96734941;stroke-dashoffset:0;stroke-opacity:1" d="M 38.630421,77.037191 H 142.8312" id="path4485"></path>
    <path style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.22665046;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.81320371, 0.90660186;stroke-dashoffset:0;stroke-opacity:1" d="M 39.197384,58.862851 H 143.20919" id="path4485-7"></path>
    <path style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.22654748;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.81237991, 0.90618995;stroke-dashoffset:0;stroke-opacity:1" d="M 38.913902,95.211506 H 142.83121" id="path4485-7-8"></path>
    <path style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.18629697px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow2Lstart)" d="M 51.941461,59.451424 V 76.699472" id="path4527"></path>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="54.540958" y="84.543755" id="text4489-6"><tspan id="tspan4487-4" x="54.540958" y="84.543755" style="font-size:4.23333311px;stroke-width:0.26458332px">SurfaceTolerance</tspan></text>
    <path style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.22685628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" d="M 39.10289,124.87842 H 143.30368" id="path4485-7-8-9"></path>
    <path style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend-8)" d="M 121.60522,77.855508 V 123.337" id="path4527-4"></path>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="91.466324" y="116.6234" id="text4489-6-5"><tspan id="tspan4487-4-4" x="91.466324" y="116.6234" style="font-size:4.23333311px;stroke-width:0.26458332px">MinThickness</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="102.49786" y="92.405167" id="text5797"><tspan id="tspan5795" x="102.49786" y="92.405167" style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px">s</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="100.03944" y="140.31378" id="text5797-9-99"><tspan id="tspan5795-3-91" x="100.03944" y="140.31378" style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px">o</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="38.88623" y="137.0658" id="text5797-9-5"><tspan id="tspan5795-3-0" x="38.88623" y="137.0658" style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px">o</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="118.39892" y="131.05222" id="text5797-9-99-9"><tspan id="tspan5795-3-91-3" x="118.39892" y="131.05222" style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px">o</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="134.59003" y="138.13025" id="text5797-9-99-48"><tspan id="tspan5795-3-91-6" x="134.59003" y="138.13025" style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px">o</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="60.178978" y="130.01462" id="text5797-9-99-0"><tspan id="tspan5795-3-91-9" x="60.178978" y="130.01462" style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px">o</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="45.834564" y="46.320591" id="text5797-9-99-78"><tspan id="tspan5795-3-91-0" x="45.834564" y="46.320591" style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px">o</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="68.059578" y="51.396408" id="text5797-9-99-704"><tspan id="tspan5795-3-91-88" x="68.059578" y="51.396408" style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px">o</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#18b2ef;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="106.58495" y="110.41074" id="text5797-9-8-2"><tspan id="tspan5795-3-2-4" x="106.58495" y="110.41074" style="font-size:3.52777767px;fill:#18b2ef;fill-opacity:1;stroke-width:0.26458332px">i</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#18b2ef;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="46.689037" y="101.98158" id="text5797-9-8-74"><tspan id="tspan5795-3-2-7" x="46.689037" y="101.98158" style="font-size:3.52777767px;fill:#18b2ef;fill-opacity:1;stroke-width:0.26458332px">i</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#18b2ef;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="138.21771" y="116.23464" id="text5797-9-8-3"><tspan id="tspan5795-3-2-5" x="138.21771" y="116.23464" style="font-size:3.52777767px;fill:#18b2ef;fill-opacity:1;stroke-width:0.26458332px">i</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#18b2ef;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="96.534805" y="103.05066" id="text5797-9-8-1"><tspan id="tspan5795-3-2-75" x="96.534805" y="103.05066" style="font-size:3.52777767px;fill:#18b2ef;fill-opacity:1;stroke-width:0.26458332px">i</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#18b2ef;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="75.54071" y="113.16335" id="text5797-9-8-21"><tspan id="tspan5795-3-2-945" x="75.54071" y="113.16335" style="font-size:3.52777767px;fill:#18b2ef;fill-opacity:1;stroke-width:0.26458332px">i</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="140.31058" y="69.179329" id="text5797-4"><tspan id="tspan5795-0" x="140.31058" y="69.179329" style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px">s</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="126.41256" y="71.451118" id="text5797-5"><tspan id="tspan5795-2" x="126.41256" y="71.451118" style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px">s</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="117.59267" y="90.828156" id="text5797-2"><tspan id="tspan5795-03" x="117.59267" y="90.828156" style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px">s</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="107.30279" y="82.810074" id="text5797-8"><tspan id="tspan5795-7" x="107.30279" y="82.810074" style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px">s</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="112.67647" y="69.438248" id="text5797-90"><tspan id="tspan5795-08" x="112.67647" y="69.438248" style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px">s</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="135.87547" y="74.250732" id="text5797-3"><tspan id="tspan5795-4" x="135.87547" y="74.250732" style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px">s</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="59.359856" y="74.396645" id="text5797-1"><tspan id="tspan5795-5" x="59.359856" y="74.396645" style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px">s</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="41.688118" y="73.455643" id="text5797-80"><tspan id="tspan5795-28" x="41.688118" y="73.455643" style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px">s</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="48.77076" y="86.952751" id="text5797-6"><tspan id="tspan5795-23" x="48.77076" y="86.952751" style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px">s</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="40.915478" y="82.858238" id="text5797-99"><tspan id="tspan5795-9" x="40.915478" y="82.858238" style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px">s</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="80.598007" y="69.399109" id="text5797-86"><tspan id="tspan5795-91" x="80.598007" y="69.399109" style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px">s</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="138.84059" y="87.353653" id="text5797-26"><tspan id="tspan5795-92" x="138.84059" y="87.353653" style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px">s</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="102.49194" y="69.045692" id="text5797-18"><tspan id="tspan5795-6" x="102.49194" y="69.045692" style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px">s</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="89.796631" y="77.999222" id="text5797-18-7"><tspan id="tspan5795-6-4" x="89.796631" y="77.999222" style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px">s</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="117.99357" y="77.197411" id="text5797-18-4"><tspan id="tspan5795-6-0" x="117.99357" y="77.197411" style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px">s</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="130.4216" y="77.865585" id="text5797-18-8"><tspan id="tspan5795-6-41" x="130.4216" y="77.865585" style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px">s</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="45.42989" y="77.731949" id="text5797-18-6"><tspan id="tspan5795-6-5" x="45.42989" y="77.731949" style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px">s</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="71.062057" y="78.338058" id="text5797-18-9"><tspan id="tspan5795-6-02" x="71.062057" y="78.338058" style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px">s</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="101.82376" y="78.266495" id="text5797-18-75"><tspan id="tspan5795-6-9" x="101.82376" y="78.266495" style="font-size:3.52777767px;fill:#fe1266;fill-opacity:1;stroke-width:0.26458332px">s</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;" x="95.736359" y="51.93766" id="text5797-9-99-5-5"><tspan id="tspan5795-3-91-53-6" x="95.736359" y="51.93766" style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px;">o</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="131.59633" y="44.277405" id="text5797-9-99-5-9"><tspan id="tspan5795-3-91-53-4" x="131.59633" y="44.277405" style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px">o</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="138.68336" y="57.891846" id="text5797-9-99-5-5-5"><tspan id="tspan5795-3-91-53-6-4" x="138.68336" y="57.891846" style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px">o</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="47.024139" y="54.868034" id="text5797-9-99-5-5-9"><tspan id="tspan5795-3-91-53-6-8" x="47.024139" y="54.868034" style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px">o</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="87.452705" y="44.850803" id="text5797-9-99-78-1"><tspan id="tspan5795-3-91-0-5" x="87.452705" y="44.850803" style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px">o</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#18b2ef;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="54.304859" y="113.12103" id="text5797-9-8-21-8"><tspan id="tspan5795-3-2-945-1" x="54.304859" y="113.12103" style="font-size:3.52777767px;fill:#18b2ef;fill-opacity:1;stroke-width:0.26458332px">i</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#18b2ef;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="67.345039" y="103.76612" id="text5797-9-8-21-4"><tspan id="tspan5795-3-2-945-12" x="67.345039" y="103.76612" style="font-size:3.52777767px;fill:#18b2ef;fill-opacity:1;stroke-width:0.26458332px">i</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#18b2ef;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="66.116608" y="123.89336" id="text5797-9-8-21-2"><tspan id="tspan5795-3-2-945-5" x="66.116608" y="123.89336" style="font-size:3.52777767px;fill:#18b2ef;fill-opacity:1;stroke-width:0.26458332px">i</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#18b2ef;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="100.22897" y="123.42088" id="text5797-9-8-21-22"><tspan id="tspan5795-3-2-945-7" x="100.22897" y="123.42088" style="font-size:3.52777767px;fill:#18b2ef;fill-opacity:1;stroke-width:0.26458332px">i</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#18b2ef;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="45.800396" y="123.42088" id="text5797-9-8-21-7"><tspan id="tspan5795-3-2-945-6" x="45.800396" y="123.42088" style="font-size:3.52777767px;fill:#18b2ef;fill-opacity:1;stroke-width:0.26458332px">i</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#18b2ef;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="132.26245" y="104.80555" id="text5797-9-8-21-45"><tspan id="tspan5795-3-2-945-74" x="132.26245" y="104.80555" style="font-size:3.52777767px;fill:#18b2ef;fill-opacity:1;stroke-width:0.26458332px">i</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#18b2ef;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="83.503517" y="98.474449" id="text5797-9-8-21-0"><tspan id="tspan5795-3-2-945-57" x="83.503517" y="98.474449" style="font-size:3.52777767px;fill:#18b2ef;fill-opacity:1;stroke-width:0.26458332px">i</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="120.25703" y="49.103897" id="text5797-9-99-5-5-5-4"><tspan id="tspan5795-3-91-53-6-4-7" x="120.25703" y="49.103897" style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px">o</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fe1266;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="73.313301" y="63.277142" id="text5797-18-75-5"><tspan id="tspan5795-6-9-3" x="73.313301" y="63.277142" style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px">o</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="82.925186" y="127.4386" id="text5797-9-99-48-0"><tspan id="tspan5795-3-91-6-6" x="82.925186" y="127.4386" style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px">o</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="70.640953" y="137.45497" id="text5797-9-99-48-1"><tspan id="tspan5795-3-91-6-4" x="70.640953" y="137.45497" style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px">o</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:4.16514683px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.10412867px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="61.394363" y="-111.27747" id="text5797-9-99-5-9-9" transform="scale(2.5409268,-0.39355718)"><tspan id="tspan5795-3-91-53-4-0" x="61.394363" y="-111.27747" style="font-size:1.3883822px;fill:#ffffff;fill-opacity:0;stroke-width:0.10412867px">.</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="24.614069" y="139.38419" id="text5797-9-99-5-9-9-3"><tspan id="tspan5795-3-91-53-4-0-7" x="24.614069" y="139.38419" style="font-size:3.52777767px;fill:#ffffff;fill-opacity:0;stroke-width:0.26458332px">.</tspan></text>
    <path style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.18849733;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Lend-83)" d="M 93.178039,77.132198 V 94.734604" id="path4527-3"></path>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="54.492474" y="72.595016" id="text4489-6-52"><tspan id="tspan4487-4-5" x="54.492474" y="72.595016" style="font-size:4.23333311px;stroke-width:0.26458332px">SurfaceTolerance</tspan></text>
  </g>
  <g id="layer2" style="display:inline" transform="translate(-23.630421,-42.29992)">
    <path style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.22623827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" d="M 39.291879,66.678362 H 142.92571" id="path4485-7-8-9-0-6"></path>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="93.854164" y="72.544464" id="text4489-6-9-8"><tspan id="tspan4487-4-1-9" x="93.854164" y="72.544464" style="font-size:4.23333311px;stroke-width:0.26458332px">'distance_in_front'</tspan></text>
    <path style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Lend-8-8-5-8)" d="M 134.60211,76.347107 V 67.429238" id="path4527-4-1-7-1"></path>
  </g>
  <g id="layer3" style="display:inline" transform="translate(-23.630421,-42.29992)">
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="121.07161" y="64.368477" id="text5797-9-99-5"><tspan id="tspan5795-3-91-53" x="121.07161" y="64.368477" style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px">o</tspan></text>
    <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#188b21;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="137.03412" y="62.459602" id="text5797-9-99-00"><tspan id="tspan5795-3-91-2" x="137.03412" y="62.459602" style="font-size:3.52777767px;fill:#188b21;fill-opacity:1;stroke-width:0.26458332px">o</tspan></text>
  </g>
</svg></td>
</tr>
<tr>
<td align="center">
        (
      1)
    </td>
<td align="center">
        (
      2)
    </td>
</tr>
</table>
<div style="margin-bottom:30px;text-align:center;" class="caption">
Schematic view of the parameters <a href="#SurfaceTolerance"><i><code><span data-if="hdevelop" style="display:inline">SurfaceTolerance</span><span data-if="c" style="display:none">SurfaceTolerance</span><span data-if="cpp" style="display:none">SurfaceTolerance</span><span data-if="com" style="display:none">SurfaceTolerance</span><span data-if="dotnet" style="display:none">surfaceTolerance</span><span data-if="python" style="display:none">surface_tolerance</span></code></i></a>,
<a href="#MinThickness"><i><code><span data-if="hdevelop" style="display:inline">MinThickness</span><span data-if="c" style="display:none">MinThickness</span><span data-if="cpp" style="display:none">MinThickness</span><span data-if="com" style="display:none">MinThickness</span><span data-if="dotnet" style="display:none">minThickness</span><span data-if="python" style="display:none">min_thickness</span></code></i></a> and the value <i><span data-if="hdevelop" style="display:inline">'distance_in_front'</span><span data-if="c" style="display:none">"distance_in_front"</span><span data-if="cpp" style="display:none">"distance_in_front"</span><span data-if="com" style="display:none">"distance_in_front"</span><span data-if="dotnet" style="display:none">"distance_in_front"</span><span data-if="python" style="display:none">"distance_in_front"</span></i>
with the aid of an example surface (_.):
<code>o</code> are points taken as outside,
<code>s</code> are points of the surface,
<code>i</code> are points surely inside the object,
<code>c</code> are points also considered for the evaluation of the surface.
(1): <i><span data-if="hdevelop" style="display:inline">'distance_in_front'</span><span data-if="c" style="display:none">"distance_in_front"</span><span data-if="cpp" style="display:none">"distance_in_front"</span><span data-if="com" style="display:none">"distance_in_front"</span><span data-if="dotnet" style="display:none">"distance_in_front"</span><span data-if="python" style="display:none">"distance_in_front"</span></i> smaller than <a href="#SurfaceTolerance"><i><code><span data-if="hdevelop" style="display:inline">SurfaceTolerance</span><span data-if="c" style="display:none">SurfaceTolerance</span><span data-if="cpp" style="display:none">SurfaceTolerance</span><span data-if="com" style="display:none">SurfaceTolerance</span><span data-if="dotnet" style="display:none">surfaceTolerance</span><span data-if="python" style="display:none">surface_tolerance</span></code></i></a>
(2): <i><span data-if="hdevelop" style="display:inline">'distance_in_front'</span><span data-if="c" style="display:none">"distance_in_front"</span><span data-if="cpp" style="display:none">"distance_in_front"</span><span data-if="com" style="display:none">"distance_in_front"</span><span data-if="dotnet" style="display:none">"distance_in_front"</span><span data-if="python" style="display:none">"distance_in_front"</span></i> larger than <a href="#SurfaceTolerance"><i><code><span data-if="hdevelop" style="display:inline">SurfaceTolerance</span><span data-if="c" style="display:none">SurfaceTolerance</span><span data-if="cpp" style="display:none">SurfaceTolerance</span><span data-if="com" style="display:none">SurfaceTolerance</span><span data-if="dotnet" style="display:none">surfaceTolerance</span><span data-if="python" style="display:none">surface_tolerance</span></code></i></a>.
</div>
</div>
<p>By setting <a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a> to the following values, the additional
parameters can be set with <a href="#GenParamValue"><i><code><span data-if="hdevelop" style="display:inline">GenParamValue</span><span data-if="c" style="display:none">GenParamValue</span><span data-if="cpp" style="display:none">GenParamValue</span><span data-if="com" style="display:none">GenParamValue</span><span data-if="dotnet" style="display:none">genParamValue</span><span data-if="python" style="display:none">gen_param_value</span></code></i></a>:
</p>
<dl class="generic">

<dt><b><i><span data-if="hdevelop" style="display:inline">'distance_in_front'</span><span data-if="c" style="display:none">"distance_in_front"</span><span data-if="cpp" style="display:none">"distance_in_front"</span><span data-if="com" style="display:none">"distance_in_front"</span><span data-if="dotnet" style="display:none">"distance_in_front"</span><span data-if="python" style="display:none">"distance_in_front"</span></i></b></dt>
<dd>
<p>

Points in the exterior of the object as specified by
<a href="#NormalDirection"><i><code><span data-if="hdevelop" style="display:inline">NormalDirection</span><span data-if="c" style="display:none">NormalDirection</span><span data-if="cpp" style="display:none">NormalDirection</span><span data-if="com" style="display:none">NormalDirection</span><span data-if="dotnet" style="display:none">normalDirection</span><span data-if="python" style="display:none">normal_direction</span></code></i></a>
(and also <a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a>=<i><span data-if="hdevelop" style="display:inline">'angle_threshold'</span><span data-if="c" style="display:none">"angle_threshold"</span><span data-if="cpp" style="display:none">"angle_threshold"</span><span data-if="com" style="display:none">"angle_threshold"</span><span data-if="dotnet" style="display:none">"angle_threshold"</span><span data-if="python" style="display:none">"angle_threshold"</span></i>)
are only considered as part of the
object if their distance to the initial surface does not exceed
<i><span data-if="hdevelop" style="display:inline">'distance_in_front'</span><span data-if="c" style="display:none">"distance_in_front"</span><span data-if="cpp" style="display:none">"distance_in_front"</span><span data-if="com" style="display:none">"distance_in_front"</span><span data-if="dotnet" style="display:none">"distance_in_front"</span><span data-if="python" style="display:none">"distance_in_front"</span></i>.
This is the outside analogous to <a href="#MinThickness"><i><code><span data-if="hdevelop" style="display:inline">MinThickness</span><span data-if="c" style="display:none">MinThickness</span><span data-if="cpp" style="display:none">MinThickness</span><span data-if="com" style="display:none">MinThickness</span><span data-if="dotnet" style="display:none">minThickness</span><span data-if="python" style="display:none">min_thickness</span></code></i></a> of the interior,
except that <i><span data-if="hdevelop" style="display:inline">'distance_in_front'</span><span data-if="c" style="display:none">"distance_in_front"</span><span data-if="cpp" style="display:none">"distance_in_front"</span><span data-if="com" style="display:none">"distance_in_front"</span><span data-if="dotnet" style="display:none">"distance_in_front"</span><span data-if="python" style="display:none">"distance_in_front"</span></i> does not have to be larger
than <a href="#SurfaceTolerance"><i><code><span data-if="hdevelop" style="display:inline">SurfaceTolerance</span><span data-if="c" style="display:none">SurfaceTolerance</span><span data-if="cpp" style="display:none">SurfaceTolerance</span><span data-if="com" style="display:none">SurfaceTolerance</span><span data-if="dotnet" style="display:none">surfaceTolerance</span><span data-if="python" style="display:none">surface_tolerance</span></code></i></a>.
In case <i><span data-if="hdevelop" style="display:inline">'distance_in_front'</span><span data-if="c" style="display:none">"distance_in_front"</span><span data-if="cpp" style="display:none">"distance_in_front"</span><span data-if="com" style="display:none">"distance_in_front"</span><span data-if="dotnet" style="display:none">"distance_in_front"</span><span data-if="python" style="display:none">"distance_in_front"</span></i> is smaller than
<a href="#SurfaceTolerance"><i><code><span data-if="hdevelop" style="display:inline">SurfaceTolerance</span><span data-if="c" style="display:none">SurfaceTolerance</span><span data-if="cpp" style="display:none">SurfaceTolerance</span><span data-if="com" style="display:none">SurfaceTolerance</span><span data-if="dotnet" style="display:none">surfaceTolerance</span><span data-if="python" style="display:none">surface_tolerance</span></code></i></a> it determines the surface thickness to the
front.
This parameter is useful if holes in the surface should be closed along
a jump in the surface
(for example along the viewing direction of the sensor). In this case,
<i><span data-if="hdevelop" style="display:inline">'distance_in_front'</span><span data-if="c" style="display:none">"distance_in_front"</span><span data-if="cpp" style="display:none">"distance_in_front"</span><span data-if="com" style="display:none">"distance_in_front"</span><span data-if="dotnet" style="display:none">"distance_in_front"</span><span data-if="python" style="display:none">"distance_in_front"</span></i> can be set to a small value in order to
avoid a wrong initialization of the distance field.
<i><span data-if="hdevelop" style="display:inline">'distance_in_front'</span><span data-if="c" style="display:none">"distance_in_front"</span><span data-if="cpp" style="display:none">"distance_in_front"</span><span data-if="com" style="display:none">"distance_in_front"</span><span data-if="dotnet" style="display:none">"distance_in_front"</span><span data-if="python" style="display:none">"distance_in_front"</span></i> is set in the same unit as used in
<a href="#ObjectModel3D"><i><code><span data-if="hdevelop" style="display:inline">ObjectModel3D</span><span data-if="c" style="display:none">ObjectModel3D</span><span data-if="cpp" style="display:none">ObjectModel3D</span><span data-if="com" style="display:none">ObjectModel3D</span><span data-if="dotnet" style="display:none">objectModel3D</span><span data-if="python" style="display:none">object_model_3d</span></code></i></a>.
<i><span data-if="hdevelop" style="display:inline">'distance_in_front'</span><span data-if="c" style="display:none">"distance_in_front"</span><span data-if="cpp" style="display:none">"distance_in_front"</span><span data-if="com" style="display:none">"distance_in_front"</span><span data-if="dotnet" style="display:none">"distance_in_front"</span><span data-if="python" style="display:none">"distance_in_front"</span></i> should always be a bit larger than
<a href="#Resolution"><i><code><span data-if="hdevelop" style="display:inline">Resolution</span><span data-if="c" style="display:none">Resolution</span><span data-if="cpp" style="display:none">Resolution</span><span data-if="com" style="display:none">Resolution</span><span data-if="dotnet" style="display:none">resolution</span><span data-if="python" style="display:none">resolution</span></code></i></a> in order to avoid discretization artifacts.
Per default, <i><span data-if="hdevelop" style="display:inline">'distance_in_front'</span><span data-if="c" style="display:none">"distance_in_front"</span><span data-if="cpp" style="display:none">"distance_in_front"</span><span data-if="com" style="display:none">"distance_in_front"</span><span data-if="dotnet" style="display:none">"distance_in_front"</span><span data-if="python" style="display:none">"distance_in_front"</span></i> is set to a value larger than
the bounding box diameter, therewith all points outside of the object
in the bounding box are considered.</p>
<p>
<span class="pardesc"><span class="parcat">Suggested values:
      </span></span> <i>0.001</i>, <i>0.1</i>, <i>1</i>,
<i>10</i>. </p>
<p>
<span class="pardesc"><span class="parcat">Default:
      </span></span> Larger than the bounding box diameter. </p>
<p>
<span class="pardesc"><span class="parcat">Restriction:
      </span></span> <i><span data-if="hdevelop" style="display:inline">'distance_in_front'</span><span data-if="c" style="display:none">"distance_in_front"</span><span data-if="cpp" style="display:none">"distance_in_front"</span><span data-if="com" style="display:none">"distance_in_front"</span><span data-if="dotnet" style="display:none">"distance_in_front"</span><span data-if="python" style="display:none">"distance_in_front"</span></i> &gt; 0
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'angle_threshold'</span><span data-if="c" style="display:none">"angle_threshold"</span><span data-if="cpp" style="display:none">"angle_threshold"</span><span data-if="com" style="display:none">"angle_threshold"</span><span data-if="dotnet" style="display:none">"angle_threshold"</span><span data-if="python" style="display:none">"angle_threshold"</span></i></b></dt>
<dd>
<p>

specifies the angle of a cone around a surface normal.
<i><span data-if="hdevelop" style="display:inline">'angle_threshold'</span><span data-if="c" style="display:none">"angle_threshold"</span><span data-if="cpp" style="display:none">"angle_threshold"</span><span data-if="com" style="display:none">"angle_threshold"</span><span data-if="dotnet" style="display:none">"angle_threshold"</span><span data-if="python" style="display:none">"angle_threshold"</span></i> is set in [rad]. When determining
the distance information for data fidelity, only points are considered
lying in such a cone starting at their closest surface point.
For example, if distances to
triangles are considered, <i><span data-if="hdevelop" style="display:inline">'angle_threshold'</span><span data-if="c" style="display:none">"angle_threshold"</span><span data-if="cpp" style="display:none">"angle_threshold"</span><span data-if="com" style="display:none">"angle_threshold"</span><span data-if="dotnet" style="display:none">"angle_threshold"</span><span data-if="python" style="display:none">"angle_threshold"</span></i> can be set to
<i>0.0</i>, so that only the volume directly above the triangle
is considered (thus a right prism).
If point normals are used and thus distances to normals are considered,
<i><span data-if="hdevelop" style="display:inline">'angle_threshold'</span><span data-if="c" style="display:none">"angle_threshold"</span><span data-if="cpp" style="display:none">"angle_threshold"</span><span data-if="com" style="display:none">"angle_threshold"</span><span data-if="dotnet" style="display:none">"angle_threshold"</span><span data-if="python" style="display:none">"angle_threshold"</span></i> has to be set to a higher value.
When outliers disrupt the result, decreasing <i><span data-if="hdevelop" style="display:inline">'angle_threshold'</span><span data-if="c" style="display:none">"angle_threshold"</span><span data-if="cpp" style="display:none">"angle_threshold"</span><span data-if="com" style="display:none">"angle_threshold"</span><span data-if="dotnet" style="display:none">"angle_threshold"</span><span data-if="python" style="display:none">"angle_threshold"</span></i>
may help.
If holes in the surface should be closed along a
jump in the surface (for example along the viewing direction of the
sensor), enlarging <i><span data-if="hdevelop" style="display:inline">'angle_threshold'</span><span data-if="c" style="display:none">"angle_threshold"</span><span data-if="cpp" style="display:none">"angle_threshold"</span><span data-if="com" style="display:none">"angle_threshold"</span><span data-if="dotnet" style="display:none">"angle_threshold"</span><span data-if="python" style="display:none">"angle_threshold"</span></i> may help.</p>
<p>
<span class="pardesc"><span class="parcat">Suggested values:
      </span></span> <i><span data-if="hdevelop" style="display:inline">'rad(0.0)'</span><span data-if="c" style="display:none">"rad(0.0)"</span><span data-if="cpp" style="display:none">"rad(0.0)"</span><span data-if="com" style="display:none">"rad(0.0)"</span><span data-if="dotnet" style="display:none">"rad(0.0)"</span><span data-if="python" style="display:none">"rad(0.0)"</span></i>, <i><span data-if="hdevelop" style="display:inline">'rad(10.0)'</span><span data-if="c" style="display:none">"rad(10.0)"</span><span data-if="cpp" style="display:none">"rad(10.0)"</span><span data-if="com" style="display:none">"rad(10.0)"</span><span data-if="dotnet" style="display:none">"rad(10.0)"</span><span data-if="python" style="display:none">"rad(10.0)"</span></i>,
<i><span data-if="hdevelop" style="display:inline">'rad(30.0)'</span><span data-if="c" style="display:none">"rad(30.0)"</span><span data-if="cpp" style="display:none">"rad(30.0)"</span><span data-if="com" style="display:none">"rad(30.0)"</span><span data-if="dotnet" style="display:none">"rad(30.0)"</span><span data-if="python" style="display:none">"rad(30.0)"</span></i>.  </p>
<p>
<span class="pardesc"><span class="parcat">Default:
      </span></span> <i><span data-if="hdevelop" style="display:inline">'rad(10.0)'</span><span data-if="c" style="display:none">"rad(10.0)"</span><span data-if="cpp" style="display:none">"rad(10.0)"</span><span data-if="com" style="display:none">"rad(10.0)"</span><span data-if="dotnet" style="display:none">"rad(10.0)"</span><span data-if="python" style="display:none">"rad(10.0)"</span></i>. </p>
<p>
<span class="pardesc"><span class="parcat">Restriction:
      </span></span> <i><span data-if="hdevelop" style="display:inline">'angle_threshold'</span><span data-if="c" style="display:none">"angle_threshold"</span><span data-if="cpp" style="display:none">"angle_threshold"</span><span data-if="com" style="display:none">"angle_threshold"</span><span data-if="dotnet" style="display:none">"angle_threshold"</span><span data-if="python" style="display:none">"angle_threshold"</span></i> &gt;= 0
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'point_meshing'</span><span data-if="c" style="display:none">"point_meshing"</span><span data-if="cpp" style="display:none">"point_meshing"</span><span data-if="com" style="display:none">"point_meshing"</span><span data-if="dotnet" style="display:none">"point_meshing"</span><span data-if="python" style="display:none">"point_meshing"</span></i></b></dt>
<dd>
<p>

determines whether the output points should be triangulated with the
algorithm 'marching tetrahedra', which can be activated by setting
<i><span data-if="hdevelop" style="display:inline">'point_meshing'</span><span data-if="c" style="display:none">"point_meshing"</span><span data-if="cpp" style="display:none">"point_meshing"</span><span data-if="com" style="display:none">"point_meshing"</span><span data-if="dotnet" style="display:none">"point_meshing"</span><span data-if="python" style="display:none">"point_meshing"</span></i> to <i><span data-if="hdevelop" style="display:inline">'isosurface'</span><span data-if="c" style="display:none">"isosurface"</span><span data-if="cpp" style="display:none">"isosurface"</span><span data-if="com" style="display:none">"isosurface"</span><span data-if="dotnet" style="display:none">"isosurface"</span><span data-if="python" style="display:none">"isosurface"</span></i>.
Note that there are more points in <a href="#ObjectModel3DFusion"><i><code><span data-if="hdevelop" style="display:inline">ObjectModel3DFusion</span><span data-if="c" style="display:none">ObjectModel3DFusion</span><span data-if="cpp" style="display:none">ObjectModel3DFusion</span><span data-if="com" style="display:none">ObjectModel3DFusion</span><span data-if="dotnet" style="display:none">objectModel3DFusion</span><span data-if="python" style="display:none">object_model_3dfusion</span></code></i></a> if
meshing of the isosurface is enabled even if the used
<a href="#Resolution"><i><code><span data-if="hdevelop" style="display:inline">Resolution</span><span data-if="c" style="display:none">Resolution</span><span data-if="cpp" style="display:none">Resolution</span><span data-if="com" style="display:none">Resolution</span><span data-if="dotnet" style="display:none">resolution</span><span data-if="python" style="display:none">resolution</span></code></i></a> is the same.</p>
<p>
<span class="pardesc"><span class="parcat">List of values:
      </span></span>  <i><span data-if="hdevelop" style="display:inline">'none'</span><span data-if="c" style="display:none">"none"</span><span data-if="cpp" style="display:none">"none"</span><span data-if="com" style="display:none">"none"</span><span data-if="dotnet" style="display:none">"none"</span><span data-if="python" style="display:none">"none"</span></i>, <i><span data-if="hdevelop" style="display:inline">'isosurface'</span><span data-if="c" style="display:none">"isosurface"</span><span data-if="cpp" style="display:none">"isosurface"</span><span data-if="com" style="display:none">"isosurface"</span><span data-if="dotnet" style="display:none">"isosurface"</span><span data-if="python" style="display:none">"isosurface"</span></i>.</p>
<p>
<span class="pardesc"><span class="parcat">Default:
      </span></span> <i><span data-if="hdevelop" style="display:inline">'isosurface'</span><span data-if="c" style="display:none">"isosurface"</span><span data-if="cpp" style="display:none">"isosurface"</span><span data-if="com" style="display:none">"isosurface"</span><span data-if="dotnet" style="display:none">"isosurface"</span><span data-if="python" style="display:none">"isosurface"</span></i>.</p>


</dd>
</dl>
<h3>Fusion algorithm</h3>
<p>
The algorithm will produce a watertight, closed surface (which is maybe
cut off at the <a href="#BoundingBox"><i><code><span data-if="hdevelop" style="display:inline">BoundingBox</span><span data-if="c" style="display:none">BoundingBox</span><span data-if="cpp" style="display:none">BoundingBox</span><span data-if="com" style="display:none">BoundingBox</span><span data-if="dotnet" style="display:none">boundingBox</span><span data-if="python" style="display:none">bounding_box</span></code></i></a>). The goal is to obtain
a preferably smooth surface while keeping form fidelity. To this end,
the bounding box is sampled and each sample point is assigned an initial
distance to a so-called isosurface (consisting of points with distance 0).
The final distance values (and thus the isosurface) are obtained by
minimizing an error function based on fidelity to the initial point clouds
on the one hand and total variation ('jumpiness') of the distance function
on the other hand. This leads to a fusion of the input point clouds
(see paper in References below).
</p>
<p>The calculation of the isosurface can be influenced with
the parameters of 该算子.
The distance between sample points in the bounding box (in each
coordinate direction) can be set with the parameter <a href="#Resolution"><i><code><span data-if="hdevelop" style="display:inline">Resolution</span><span data-if="c" style="display:none">Resolution</span><span data-if="cpp" style="display:none">Resolution</span><span data-if="com" style="display:none">Resolution</span><span data-if="dotnet" style="display:none">resolution</span><span data-if="python" style="display:none">resolution</span></code></i></a>.
</p>
<p>Fidelity to the initial point clouds is grasped as the signed distances of
sample points, lying on the grid, in the bounding box to their nearest
neighbors (points or triangles) on the input point clouds.
Whether a sample point in the bounding box is considered to lie outside
or inside the object (the sign of the distance) is determined by the
normal of its nearest neighbor on the initial surface and the set
<a href="#NormalDirection"><i><code><span data-if="hdevelop" style="display:inline">NormalDirection</span><span data-if="c" style="display:none">NormalDirection</span><span data-if="cpp" style="display:none">NormalDirection</span><span data-if="com" style="display:none">NormalDirection</span><span data-if="dotnet" style="display:none">normalDirection</span><span data-if="python" style="display:none">normal_direction</span></code></i></a>.
To determine if a sample point is surely inside or
outside the object with respect to an input point cloud, the
distance to its nearest neighbor on the initial surface is determined.
A point on the inside is considered surely inside if the distance
exceeds <a href="#SurfaceTolerance"><i><code><span data-if="hdevelop" style="display:inline">SurfaceTolerance</span><span data-if="c" style="display:none">SurfaceTolerance</span><span data-if="cpp" style="display:none">SurfaceTolerance</span><span data-if="com" style="display:none">SurfaceTolerance</span><span data-if="dotnet" style="display:none">surfaceTolerance</span><span data-if="python" style="display:none">surface_tolerance</span></code></i></a> but not <a href="#MinThickness"><i><code><span data-if="hdevelop" style="display:inline">MinThickness</span><span data-if="c" style="display:none">MinThickness</span><span data-if="cpp" style="display:none">MinThickness</span><span data-if="com" style="display:none">MinThickness</span><span data-if="dotnet" style="display:none">minThickness</span><span data-if="python" style="display:none">min_thickness</span></code></i></a>, while
a point on the outside counts as exteriorly if the distance exceeds
<i><span data-if="hdevelop" style="display:inline">'distance_in_front'</span><span data-if="c" style="display:none">"distance_in_front"</span><span data-if="cpp" style="display:none">"distance_in_front"</span><span data-if="com" style="display:none">"distance_in_front"</span><span data-if="dotnet" style="display:none">"distance_in_front"</span><span data-if="python" style="display:none">"distance_in_front"</span></i>.
</p>
<p>Fidelity to the initial point clouds is only considered for those sample
points lying within <a href="#MinThickness"><i><code><span data-if="hdevelop" style="display:inline">MinThickness</span><span data-if="c" style="display:none">MinThickness</span><span data-if="cpp" style="display:none">MinThickness</span><span data-if="com" style="display:none">MinThickness</span><span data-if="dotnet" style="display:none">minThickness</span><span data-if="python" style="display:none">min_thickness</span></code></i></a> inside or within
<a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a> <i><span data-if="hdevelop" style="display:inline">'distance_in_front'</span><span data-if="c" style="display:none">"distance_in_front"</span><span data-if="cpp" style="display:none">"distance_in_front"</span><span data-if="com" style="display:none">"distance_in_front"</span><span data-if="dotnet" style="display:none">"distance_in_front"</span><span data-if="python" style="display:none">"distance_in_front"</span></i> outside the initial
surface.
</p>
<p>Furthermore, fidelity is not maintained for a given sample point lying
outside a cone around <a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a> <i><span data-if="hdevelop" style="display:inline">'angle_threshold'</span><span data-if="c" style="display:none">"angle_threshold"</span><span data-if="cpp" style="display:none">"angle_threshold"</span><span data-if="com" style="display:none">"angle_threshold"</span><span data-if="dotnet" style="display:none">"angle_threshold"</span><span data-if="python" style="display:none">"angle_threshold"</span></i>.
Thus it is not maintained if the line from
the sample point to its nearest neighbor on the initial surface differs
from the surface normal of the nearest neighbor by an angle more than
<a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a> <i><span data-if="hdevelop" style="display:inline">'angle_threshold'</span><span data-if="c" style="display:none">"angle_threshold"</span><span data-if="cpp" style="display:none">"angle_threshold"</span><span data-if="com" style="display:none">"angle_threshold"</span><span data-if="dotnet" style="display:none">"angle_threshold"</span><span data-if="python" style="display:none">"angle_threshold"</span></i>.
Note that the distances to nearest neighboring triangles will
often yield more satisfying results while distances to nearest points can
be calculated much faster.
</p>
<p>The subsequent optimization of the distance values is the same as
the one used in <a href="reconstruct_surface_stereo.html"><code><span data-if="hdevelop" style="display:inline">reconstruct_surface_stereo</span><span data-if="c" style="display:none">reconstruct_surface_stereo</span><span data-if="cpp" style="display:none">ReconstructSurfaceStereo</span><span data-if="com" style="display:none">ReconstructSurfaceStereo</span><span data-if="dotnet" style="display:none">ReconstructSurfaceStereo</span><span data-if="python" style="display:none">reconstruct_surface_stereo</span></code></a> with
<code><span data-if="hdevelop" style="display:inline">Method</span><span data-if="c" style="display:none">Method</span><span data-if="cpp" style="display:none">Method</span><span data-if="com" style="display:none">Method</span><span data-if="dotnet" style="display:none">method</span><span data-if="python" style="display:none">method</span></code>=<i><span data-if="hdevelop" style="display:inline">'surface_fusion'</span><span data-if="c" style="display:none">"surface_fusion"</span><span data-if="cpp" style="display:none">"surface_fusion"</span><span data-if="com" style="display:none">"surface_fusion"</span><span data-if="dotnet" style="display:none">"surface_fusion"</span><span data-if="python" style="display:none">"surface_fusion"</span></i>.
</p>
<p>The parameter <a href="#Smoothing"><i><code><span data-if="hdevelop" style="display:inline">Smoothing</span><span data-if="c" style="display:none">Smoothing</span><span data-if="cpp" style="display:none">Smoothing</span><span data-if="com" style="display:none">Smoothing</span><span data-if="dotnet" style="display:none">smoothing</span><span data-if="python" style="display:none">smoothing</span></code></i></a> regulates the 'jumpiness' of the
distance function by weighing the two terms in the error function:
Fidelity to the initial point clouds
on the one hand, total variation of the distance function on the other
hand. Note that the actual value of <a href="#Smoothing"><i><code><span data-if="hdevelop" style="display:inline">Smoothing</span><span data-if="c" style="display:none">Smoothing</span><span data-if="cpp" style="display:none">Smoothing</span><span data-if="com" style="display:none">Smoothing</span><span data-if="dotnet" style="display:none">smoothing</span><span data-if="python" style="display:none">smoothing</span></code></i></a> for a given data
set to be visually pleasing has to be found by trial and error.
</p>
<p>Each 3D point of the object model returned in <a href="#ObjectModel3DFusion"><i><code><span data-if="hdevelop" style="display:inline">ObjectModel3DFusion</span><span data-if="c" style="display:none">ObjectModel3DFusion</span><span data-if="cpp" style="display:none">ObjectModel3DFusion</span><span data-if="com" style="display:none">ObjectModel3DFusion</span><span data-if="dotnet" style="display:none">objectModel3DFusion</span><span data-if="python" style="display:none">object_model_3dfusion</span></code></i></a>
is extracted from the isosurface where the distance function equals zero.
Its normal vector is calculated from the gradient of the distance
function.  The so-obtained point cloud can also be meshed using the
algorithm 'marching tetrahedra' by setting the <a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a>
<i><span data-if="hdevelop" style="display:inline">'point_meshing'</span><span data-if="c" style="display:none">"point_meshing"</span><span data-if="cpp" style="display:none">"point_meshing"</span><span data-if="com" style="display:none">"point_meshing"</span><span data-if="dotnet" style="display:none">"point_meshing"</span><span data-if="python" style="display:none">"point_meshing"</span></i> to the <a href="#GenParamValue"><i><code><span data-if="hdevelop" style="display:inline">GenParamValue</span><span data-if="c" style="display:none">GenParamValue</span><span data-if="cpp" style="display:none">GenParamValue</span><span data-if="com" style="display:none">GenParamValue</span><span data-if="dotnet" style="display:none">genParamValue</span><span data-if="python" style="display:none">gen_param_value</span></code></i></a>
<i><span data-if="hdevelop" style="display:inline">'isosurface'</span><span data-if="c" style="display:none">"isosurface"</span><span data-if="cpp" style="display:none">"isosurface"</span><span data-if="com" style="display:none">"isosurface"</span><span data-if="dotnet" style="display:none">"isosurface"</span><span data-if="python" style="display:none">"isosurface"</span></i>.
</p>
<h3>Troubleshooting</h3>
<p>
Please follow the workflow above. If the results are not
satisfactory, please consult the following hints and ideas:
</p>
<dl class="generic">

<dt><b><i>Quality of the input point clouds</i></b></dt>
<dd>
<p>

The input point clouds should represent the entire object surface. If
point normals are used, the points should be dense on the entire
surface, not only along edges of the object. In particular, for CAD-data
typically triangulation has to be used.
</p>
</dd>

<dt><b><i>Used attribute</i></b></dt>
<dd>
<p>

Using triangles instead of point normals will typically yield results
of higher quality. If both attributes are present, point normals are
used per default. If triangles should be used, use
<a href="copy_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">copy_object_model_3d</span><span data-if="c" style="display:none">copy_object_model_3d</span><span data-if="cpp" style="display:none">CopyObjectModel3d</span><span data-if="com" style="display:none">CopyObjectModel3d</span><span data-if="dotnet" style="display:none">CopyObjectModel3d</span><span data-if="python" style="display:none">copy_object_model_3d</span></code></a> to obtain only point and triangle
information.
</p>
</dd>

<dt><b><i>Outliers</i></b></dt>
<dd>
<p>

If outliers of the input models disturb the output surface even for
high values of <a href="#Smoothing"><i><code><span data-if="hdevelop" style="display:inline">Smoothing</span><span data-if="c" style="display:none">Smoothing</span><span data-if="cpp" style="display:none">Smoothing</span><span data-if="com" style="display:none">Smoothing</span><span data-if="dotnet" style="display:none">smoothing</span><span data-if="python" style="display:none">smoothing</span></code></i></a>, try to decrease <a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a>
<i><span data-if="hdevelop" style="display:inline">'angle_threshold'</span><span data-if="c" style="display:none">"angle_threshold"</span><span data-if="cpp" style="display:none">"angle_threshold"</span><span data-if="com" style="display:none">"angle_threshold"</span><span data-if="dotnet" style="display:none">"angle_threshold"</span><span data-if="python" style="display:none">"angle_threshold"</span></i>. If wanted, outliers of the input models
can also be removed, for example using
<a href="connection_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">connection_object_model_3d</span><span data-if="c" style="display:none">connection_object_model_3d</span><span data-if="cpp" style="display:none">ConnectionObjectModel3d</span><span data-if="com" style="display:none">ConnectionObjectModel3d</span><span data-if="dotnet" style="display:none">ConnectionObjectModel3d</span><span data-if="python" style="display:none">connection_object_model_3d</span></code></a>. With reduced influence also
modifying <a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a> <i><span data-if="hdevelop" style="display:inline">'distance_in_front'</span><span data-if="c" style="display:none">"distance_in_front"</span><span data-if="cpp" style="display:none">"distance_in_front"</span><span data-if="com" style="display:none">"distance_in_front"</span><span data-if="dotnet" style="display:none">"distance_in_front"</span><span data-if="python" style="display:none">"distance_in_front"</span></i> may help
to reduce certain outliers.
</p>
</dd>

<dt><b><i>Closing of holes</i></b></dt>
<dd>
<p>

If holes in the surface are not closed even for
high values of <a href="#Smoothing"><i><code><span data-if="hdevelop" style="display:inline">Smoothing</span><span data-if="c" style="display:none">Smoothing</span><span data-if="cpp" style="display:none">Smoothing</span><span data-if="com" style="display:none">Smoothing</span><span data-if="dotnet" style="display:none">smoothing</span><span data-if="python" style="display:none">smoothing</span></code></i></a> (for example a jump in the surface
along the viewing direction of the sensor), try to decrease
<a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a> <i><span data-if="hdevelop" style="display:inline">'distance_in_front'</span><span data-if="c" style="display:none">"distance_in_front"</span><span data-if="cpp" style="display:none">"distance_in_front"</span><span data-if="com" style="display:none">"distance_in_front"</span><span data-if="dotnet" style="display:none">"distance_in_front"</span><span data-if="python" style="display:none">"distance_in_front"</span></i>. Enlarging
<a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a> <i><span data-if="hdevelop" style="display:inline">'angle_threshold'</span><span data-if="c" style="display:none">"angle_threshold"</span><span data-if="cpp" style="display:none">"angle_threshold"</span><span data-if="com" style="display:none">"angle_threshold"</span><span data-if="dotnet" style="display:none">"angle_threshold"</span><span data-if="python" style="display:none">"angle_threshold"</span></i> may help the algorithm
to close the gap. Note that <a href="triangulate_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">triangulate_object_model_3d</span><span data-if="c" style="display:none">triangulate_object_model_3d</span><span data-if="cpp" style="display:none">TriangulateObjectModel3d</span><span data-if="com" style="display:none">TriangulateObjectModel3d</span><span data-if="dotnet" style="display:none">TriangulateObjectModel3d</span><span data-if="python" style="display:none">triangulate_object_model_3d</span></code></a> can
close gaps when triangulating sensor data which contains a 2D mapping.
</p>
</dd>

<dt><b><i>Empty output</i></b></dt>
<dd><p>

If the output contains no point, try to decrease <a href="#Smoothing"><i><code><span data-if="hdevelop" style="display:inline">Smoothing</span><span data-if="c" style="display:none">Smoothing</span><span data-if="cpp" style="display:none">Smoothing</span><span data-if="com" style="display:none">Smoothing</span><span data-if="dotnet" style="display:none">smoothing</span><span data-if="python" style="display:none">smoothing</span></code></i></a>. If
there is no output even for very low values of <a href="#Smoothing"><i><code><span data-if="hdevelop" style="display:inline">Smoothing</span><span data-if="c" style="display:none">Smoothing</span><span data-if="cpp" style="display:none">Smoothing</span><span data-if="com" style="display:none">Smoothing</span><span data-if="dotnet" style="display:none">smoothing</span><span data-if="python" style="display:none">smoothing</span></code></i></a>,
you may want to check if <a href="#MinThickness"><i><code><span data-if="hdevelop" style="display:inline">MinThickness</span><span data-if="c" style="display:none">MinThickness</span><span data-if="cpp" style="display:none">MinThickness</span><span data-if="com" style="display:none">MinThickness</span><span data-if="dotnet" style="display:none">minThickness</span><span data-if="python" style="display:none">min_thickness</span></code></i></a> is set too large and
if the set <a href="#NormalDirection"><i><code><span data-if="hdevelop" style="display:inline">NormalDirection</span><span data-if="c" style="display:none">NormalDirection</span><span data-if="cpp" style="display:none">NormalDirection</span><span data-if="com" style="display:none">NormalDirection</span><span data-if="dotnet" style="display:none">normalDirection</span><span data-if="python" style="display:none">normal_direction</span></code></i></a> is correct.
</p></dd>
</dl>
<h3>Runtime</h3>
<p>
In order to improve the runtime, consider the following hints:
</p>
<dl class="generic">

<dt><b><i>Extent of the bounding box</i></b></dt>
<dd>
<p>

The bounding box should be tight around the volume of interest. Else,
the runtime will increase drastically but without any benefit.
</p>
</dd>

<dt><b><i>Resolution</i></b></dt>
<dd>
<p>

Enlarging the parameter <a href="#Resolution"><i><code><span data-if="hdevelop" style="display:inline">Resolution</span><span data-if="c" style="display:none">Resolution</span><span data-if="cpp" style="display:none">Resolution</span><span data-if="com" style="display:none">Resolution</span><span data-if="dotnet" style="display:none">resolution</span><span data-if="python" style="display:none">resolution</span></code></i></a> will speed up the execution
considerably.
</p>
</dd>

<dt><b><i>Used attribute</i></b></dt>
<dd>
<p>

Using point normals instead of triangles will speed up the execution.
If both, normals and triangles, are present in the input models,
normals are used per default.
</p>
</dd>

<dt><b><i>Density of input point clouds</i></b></dt>
<dd>
<p>

The input point clouds can be thinned out using
<a href="sample_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">sample_object_model_3d</span><span data-if="c" style="display:none">sample_object_model_3d</span><span data-if="cpp" style="display:none">SampleObjectModel3d</span><span data-if="com" style="display:none">SampleObjectModel3d</span><span data-if="dotnet" style="display:none">SampleObjectModel3d</span><span data-if="python" style="display:none">sample_object_model_3d</span></code></a> (if normals are used) or
<a href="simplify_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">simplify_object_model_3d</span><span data-if="c" style="display:none">simplify_object_model_3d</span><span data-if="cpp" style="display:none">SimplifyObjectModel3d</span><span data-if="com" style="display:none">SimplifyObjectModel3d</span><span data-if="dotnet" style="display:none">SimplifyObjectModel3d</span><span data-if="python" style="display:none">simplify_object_model_3d</span></code></a> with <a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a>
<i><span data-if="hdevelop" style="display:inline">'avoid_triangle_flips'</span><span data-if="c" style="display:none">"avoid_triangle_flips"</span><span data-if="cpp" style="display:none">"avoid_triangle_flips"</span><span data-if="com" style="display:none">"avoid_triangle_flips"</span><span data-if="dotnet" style="display:none">"avoid_triangle_flips"</span><span data-if="python" style="display:none">"avoid_triangle_flips"</span></i> set to <i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i>
(if triangles are used).
</p>
</dd>

<dt><b><i>Distances to surface</i></b></dt>
<dd>
<p>

Make sure that <a href="#MinThickness"><i><code><span data-if="hdevelop" style="display:inline">MinThickness</span><span data-if="c" style="display:none">MinThickness</span><span data-if="cpp" style="display:none">MinThickness</span><span data-if="com" style="display:none">MinThickness</span><span data-if="dotnet" style="display:none">minThickness</span><span data-if="python" style="display:none">min_thickness</span></code></i></a> and <a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a>
<i><span data-if="hdevelop" style="display:inline">'distance_in_front'</span><span data-if="c" style="display:none">"distance_in_front"</span><span data-if="cpp" style="display:none">"distance_in_front"</span><span data-if="com" style="display:none">"distance_in_front"</span><span data-if="dotnet" style="display:none">"distance_in_front"</span><span data-if="python" style="display:none">"distance_in_front"</span></i> are not set unnecessarily large,
since this can slow down the preparation and distance computation.
</p>
</dd>
</dl>
<h2 id="sec_execution">运行信息</h2>
<ul>
  <li>多线程类型:可重入(与非独占操作符并行运行)。</li>
<li>多线程作用域:全局(可以从任何线程调用)。</li>
  
    <li>Automatically parallelized on internal data level.</li>
  
</ul>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="ObjectModel3D" class="parname"><b><code><span data-if="hdevelop" style="display:inline">ObjectModel3D</span><span data-if="c" style="display:none">ObjectModel3D</span><span data-if="cpp" style="display:none">ObjectModel3D</span><span data-if="com" style="display:none">ObjectModel3D</span><span data-if="dotnet" style="display:none">objectModel3D</span><span data-if="python" style="display:none">object_model_3d</span></code></b> (input_control)  </span><span>object_model_3d(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HObjectModel3D.html">HObjectModel3D</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">MaybeSequence[HHandle]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">Handles of the 3D object models.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="BoundingBox" class="parname"><b><code><span data-if="hdevelop" style="display:inline">BoundingBox</span><span data-if="c" style="display:none">BoundingBox</span><span data-if="cpp" style="display:none">BoundingBox</span><span data-if="com" style="display:none">BoundingBox</span><span data-if="dotnet" style="display:none">boundingBox</span><span data-if="python" style="display:none">bounding_box</span></code></b> (input_control)  </span><span>number-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[int, float]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">The two opposite bound box corners.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="Resolution" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Resolution</span><span data-if="c" style="display:none">Resolution</span><span data-if="cpp" style="display:none">Resolution</span><span data-if="com" style="display:none">Resolution</span><span data-if="dotnet" style="display:none">resolution</span><span data-if="python" style="display:none">resolution</span></code></b> (input_control)  </span><span>number <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Union[int, float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Used resolution within the bounding box.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>1.0</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>1.0, 1.1, 1.5, 10.0, 100.0</p>
</div>
  <div class="par">
<div class="parhead">
<span id="SurfaceTolerance" class="parname"><b><code><span data-if="hdevelop" style="display:inline">SurfaceTolerance</span><span data-if="c" style="display:none">SurfaceTolerance</span><span data-if="cpp" style="display:none">SurfaceTolerance</span><span data-if="com" style="display:none">SurfaceTolerance</span><span data-if="dotnet" style="display:none">surfaceTolerance</span><span data-if="python" style="display:none">surface_tolerance</span></code></b> (input_control)  </span><span>number <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Union[int, float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Distance of expected noise to surface.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>1.0</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>1.0, 1.1, 1.5, 10.0, 100.0</p>
</div>
  <div class="par">
<div class="parhead">
<span id="MinThickness" class="parname"><b><code><span data-if="hdevelop" style="display:inline">MinThickness</span><span data-if="c" style="display:none">MinThickness</span><span data-if="cpp" style="display:none">MinThickness</span><span data-if="com" style="display:none">MinThickness</span><span data-if="dotnet" style="display:none">minThickness</span><span data-if="python" style="display:none">min_thickness</span></code></b> (input_control)  </span><span>number <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Union[int, float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Minimum thickness of the object in direction
of the surface normal.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>1.0</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>1.0, 1.1, 1.5, 10.0, 100.0</p>
</div>
  <div class="par">
<div class="parhead">
<span id="Smoothing" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Smoothing</span><span data-if="c" style="display:none">Smoothing</span><span data-if="cpp" style="display:none">Smoothing</span><span data-if="com" style="display:none">Smoothing</span><span data-if="dotnet" style="display:none">smoothing</span><span data-if="python" style="display:none">smoothing</span></code></b> (input_control)  </span><span>number <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Union[int, float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Weight factor for data fidelity.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>1.0</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>1.0, 1.1, 1.5, 10.0, 100.0</p>
</div>
  <div class="par">
<div class="parhead">
<span id="NormalDirection" class="parname"><b><code><span data-if="hdevelop" style="display:inline">NormalDirection</span><span data-if="c" style="display:none">NormalDirection</span><span data-if="cpp" style="display:none">NormalDirection</span><span data-if="com" style="display:none">NormalDirection</span><span data-if="dotnet" style="display:none">normalDirection</span><span data-if="python" style="display:none">normal_direction</span></code></b> (input_control)  </span><span>string(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">MaybeSequence[str]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string)</span><span data-if="dotnet" style="display:none"> (<i>string</i>)</span><span data-if="cpp" style="display:none"> (<i>HString</i>)</span><span data-if="c" style="display:none"> (<i>char*</i>)</span></span>
</div>
<p class="pardesc">Direction of normals of the input models.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>
    <span data-if="hdevelop" style="display:inline">'inwards'</span>
    <span data-if="c" style="display:none">"inwards"</span>
    <span data-if="cpp" style="display:none">"inwards"</span>
    <span data-if="com" style="display:none">"inwards"</span>
    <span data-if="dotnet" style="display:none">"inwards"</span>
    <span data-if="python" style="display:none">"inwards"</span>
</p>
<p class="pardesc"><span class="parcat">List of values:
      </span><span data-if="hdevelop" style="display:inline">'inwards'</span><span data-if="c" style="display:none">"inwards"</span><span data-if="cpp" style="display:none">"inwards"</span><span data-if="com" style="display:none">"inwards"</span><span data-if="dotnet" style="display:none">"inwards"</span><span data-if="python" style="display:none">"inwards"</span>, <span data-if="hdevelop" style="display:inline">'outwards'</span><span data-if="c" style="display:none">"outwards"</span><span data-if="cpp" style="display:none">"outwards"</span><span data-if="com" style="display:none">"outwards"</span><span data-if="dotnet" style="display:none">"outwards"</span><span data-if="python" style="display:none">"outwards"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="GenParamName" class="parname"><b><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></b> (input_control)  </span><span>attribute.name-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[str]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string)</span><span data-if="dotnet" style="display:none"> (<i>string</i>)</span><span data-if="cpp" style="display:none"> (<i>HString</i>)</span><span data-if="c" style="display:none"> (<i>char*</i>)</span></span>
</div>
<p class="pardesc">Name of the generic parameter.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>[]</p>
<p class="pardesc"><span class="parcat">List of values:
      </span><span data-if="hdevelop" style="display:inline">'angle_threshold'</span><span data-if="c" style="display:none">"angle_threshold"</span><span data-if="cpp" style="display:none">"angle_threshold"</span><span data-if="com" style="display:none">"angle_threshold"</span><span data-if="dotnet" style="display:none">"angle_threshold"</span><span data-if="python" style="display:none">"angle_threshold"</span>, <span data-if="hdevelop" style="display:inline">'distance_in_front'</span><span data-if="c" style="display:none">"distance_in_front"</span><span data-if="cpp" style="display:none">"distance_in_front"</span><span data-if="com" style="display:none">"distance_in_front"</span><span data-if="dotnet" style="display:none">"distance_in_front"</span><span data-if="python" style="display:none">"distance_in_front"</span>, <span data-if="hdevelop" style="display:inline">'point_meshing'</span><span data-if="c" style="display:none">"point_meshing"</span><span data-if="cpp" style="display:none">"point_meshing"</span><span data-if="com" style="display:none">"point_meshing"</span><span data-if="dotnet" style="display:none">"point_meshing"</span><span data-if="python" style="display:none">"point_meshing"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="GenParamValue" class="parname"><b><code><span data-if="hdevelop" style="display:inline">GenParamValue</span><span data-if="c" style="display:none">GenParamValue</span><span data-if="cpp" style="display:none">GenParamValue</span><span data-if="com" style="display:none">GenParamValue</span><span data-if="dotnet" style="display:none">genParamValue</span><span data-if="python" style="display:none">gen_param_value</span></code></b> (input_control)  </span><span>attribute.value-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[str, float, int]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string / </span><span data-if="hdevelop" style="display:inline">real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>string</i> / </span><span data-if="dotnet" style="display:none">double / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>HString</i> / </span><span data-if="cpp" style="display:none">double / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>char*</i> / </span><span data-if="c" style="display:none">double / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Value of the generic parameter.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>[]</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span><span data-if="hdevelop" style="display:inline">'isosurface'</span><span data-if="c" style="display:none">"isosurface"</span><span data-if="cpp" style="display:none">"isosurface"</span><span data-if="com" style="display:none">"isosurface"</span><span data-if="dotnet" style="display:none">"isosurface"</span><span data-if="python" style="display:none">"isosurface"</span>, <span data-if="hdevelop" style="display:inline">'none'</span><span data-if="c" style="display:none">"none"</span><span data-if="cpp" style="display:none">"none"</span><span data-if="com" style="display:none">"none"</span><span data-if="dotnet" style="display:none">"none"</span><span data-if="python" style="display:none">"none"</span>, 0.0, 0.1, 0.175, 0.524</p>
</div>
  <div class="par">
<div class="parhead">
<span id="ObjectModel3DFusion" class="parname"><b><code><span data-if="hdevelop" style="display:inline">ObjectModel3DFusion</span><span data-if="c" style="display:none">ObjectModel3DFusion</span><span data-if="cpp" style="display:none">ObjectModel3DFusion</span><span data-if="com" style="display:none">ObjectModel3DFusion</span><span data-if="dotnet" style="display:none">objectModel3DFusion</span><span data-if="python" style="display:none">object_model_3dfusion</span></code></b> (output_control)  </span><span>object_model_3d <code>→</code> <span data-if="dotnet" style="display:none"><a href="HObjectModel3D.html">HObjectModel3D</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">HHandle</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">Handle of the fused 3D object model.</p>
</div>
<h2 id="sec_result">结果</h2>
<p><code><span data-if="hdevelop" style="display:inline">fuse_object_model_3d</span><span data-if="c" style="display:none">fuse_object_model_3d</span><span data-if="cpp" style="display:none">FuseObjectModel3d</span><span data-if="com" style="display:none">FuseObjectModel3d</span><span data-if="dotnet" style="display:none">FuseObjectModel3d</span><span data-if="python" style="display:none">fuse_object_model_3d</span></code> returns <TT>2</TT> (
      <TT>H_MSG_TRUE</TT>)
     if all parameters
are correct. 如有必要，将引发异常。</p>
<h2 id="sec_predecessors">可能的前置算子</h2>
<p>
<code><a href="read_object_model_3d.html"><span data-if="hdevelop" style="display:inline">read_object_model_3d</span><span data-if="c" style="display:none">read_object_model_3d</span><span data-if="cpp" style="display:none">ReadObjectModel3d</span><span data-if="com" style="display:none">ReadObjectModel3d</span><span data-if="dotnet" style="display:none">ReadObjectModel3d</span><span data-if="python" style="display:none">read_object_model_3d</span></a></code>, 
<code><a href="register_object_model_3d_pair.html"><span data-if="hdevelop" style="display:inline">register_object_model_3d_pair</span><span data-if="c" style="display:none">register_object_model_3d_pair</span><span data-if="cpp" style="display:none">RegisterObjectModel3dPair</span><span data-if="com" style="display:none">RegisterObjectModel3dPair</span><span data-if="dotnet" style="display:none">RegisterObjectModel3dPair</span><span data-if="python" style="display:none">register_object_model_3d_pair</span></a></code>, 
<code><a href="register_object_model_3d_global.html"><span data-if="hdevelop" style="display:inline">register_object_model_3d_global</span><span data-if="c" style="display:none">register_object_model_3d_global</span><span data-if="cpp" style="display:none">RegisterObjectModel3dGlobal</span><span data-if="com" style="display:none">RegisterObjectModel3dGlobal</span><span data-if="dotnet" style="display:none">RegisterObjectModel3dGlobal</span><span data-if="python" style="display:none">register_object_model_3d_global</span></a></code>, 
<code><a href="surface_normals_object_model_3d.html"><span data-if="hdevelop" style="display:inline">surface_normals_object_model_3d</span><span data-if="c" style="display:none">surface_normals_object_model_3d</span><span data-if="cpp" style="display:none">SurfaceNormalsObjectModel3d</span><span data-if="com" style="display:none">SurfaceNormalsObjectModel3d</span><span data-if="dotnet" style="display:none">SurfaceNormalsObjectModel3d</span><span data-if="python" style="display:none">surface_normals_object_model_3d</span></a></code>, 
<code><a href="triangulate_object_model_3d.html"><span data-if="hdevelop" style="display:inline">triangulate_object_model_3d</span><span data-if="c" style="display:none">triangulate_object_model_3d</span><span data-if="cpp" style="display:none">TriangulateObjectModel3d</span><span data-if="com" style="display:none">TriangulateObjectModel3d</span><span data-if="dotnet" style="display:none">TriangulateObjectModel3d</span><span data-if="python" style="display:none">triangulate_object_model_3d</span></a></code>, 
<code><a href="simplify_object_model_3d.html"><span data-if="hdevelop" style="display:inline">simplify_object_model_3d</span><span data-if="c" style="display:none">simplify_object_model_3d</span><span data-if="cpp" style="display:none">SimplifyObjectModel3d</span><span data-if="com" style="display:none">SimplifyObjectModel3d</span><span data-if="dotnet" style="display:none">SimplifyObjectModel3d</span><span data-if="python" style="display:none">simplify_object_model_3d</span></a></code>, 
<code><a href="get_object_model_3d_params.html"><span data-if="hdevelop" style="display:inline">get_object_model_3d_params</span><span data-if="c" style="display:none">get_object_model_3d_params</span><span data-if="cpp" style="display:none">GetObjectModel3dParams</span><span data-if="com" style="display:none">GetObjectModel3dParams</span><span data-if="dotnet" style="display:none">GetObjectModel3dParams</span><span data-if="python" style="display:none">get_object_model_3d_params</span></a></code>
</p>
<h2 id="sec_successors">可能的后置算子</h2>
<p>
<code><a href="write_object_model_3d.html"><span data-if="hdevelop" style="display:inline">write_object_model_3d</span><span data-if="c" style="display:none">write_object_model_3d</span><span data-if="cpp" style="display:none">WriteObjectModel3d</span><span data-if="com" style="display:none">WriteObjectModel3d</span><span data-if="dotnet" style="display:none">WriteObjectModel3d</span><span data-if="python" style="display:none">write_object_model_3d</span></a></code>, 
<code><a href="create_surface_model.html"><span data-if="hdevelop" style="display:inline">create_surface_model</span><span data-if="c" style="display:none">create_surface_model</span><span data-if="cpp" style="display:none">CreateSurfaceModel</span><span data-if="com" style="display:none">CreateSurfaceModel</span><span data-if="dotnet" style="display:none">CreateSurfaceModel</span><span data-if="python" style="display:none">create_surface_model</span></a></code>
</p>
<h2 id="sec_see">参考其它</h2>
<p>
<code><a href="reconstruct_surface_stereo.html"><span data-if="hdevelop" style="display:inline">reconstruct_surface_stereo</span><span data-if="c" style="display:none">reconstruct_surface_stereo</span><span data-if="cpp" style="display:none">ReconstructSurfaceStereo</span><span data-if="com" style="display:none">ReconstructSurfaceStereo</span><span data-if="dotnet" style="display:none">ReconstructSurfaceStereo</span><span data-if="python" style="display:none">reconstruct_surface_stereo</span></a></code>
</p>
<h2 id="sec_references">References</h2>
<p>

C. Zach, T. Pock, and H. Bischof: “A globally optimal algorithm for robust
TV-L1 range image integration.”
Proceedings of IEEE International Conference on Computer Vision (ICCV 2007).
</p>
<h2 id="sec_module">模块</h2>
<p>
3D Metrology</p>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
